From: Frank Brehm Date: Tue, 31 Jan 2012 21:43:54 +0000 (+0100) Subject: Current state X-Git-Url: https://git.uhu-banane.org/?a=commitdiff_plain;h=4d976a2cec9917f2c71dac783cdf18df648a9787;p=config%2Fbruni%2Fetc.git Current state --- diff --git a/.etckeeper b/.etckeeper index 62ee71f8..5eaf1159 100755 --- a/.etckeeper +++ b/.etckeeper @@ -7,6 +7,7 @@ mkdir -p './courier-imap/shared.tmp' 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' @@ -220,7 +221,6 @@ maybe chmod 0644 './conf.d/alsasound' 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' @@ -255,6 +255,7 @@ maybe chmod 0644 './conf.d/pciparm' 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' @@ -278,14 +279,80 @@ maybe chmod 0755 './config-archive/etc' 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' @@ -303,6 +370,10 @@ maybe chmod 0644 './config-archive/etc/portage/savedconfig/sys-apps/busybox-1.19 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' @@ -329,6 +400,14 @@ maybe chmod 0644 './config-archive/etc/texmf/language.dat.lua.d/language.texlive 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' @@ -997,6 +1076,7 @@ maybe chmod 0755 './init.d/pydoc-2.7' 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' @@ -1025,7 +1105,6 @@ maybe chmod 0755 './init.d/termencoding' 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' @@ -1118,7 +1197,6 @@ maybe chmod 0700 './lvm/backup' 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' @@ -1419,6 +1497,8 @@ maybe chmod 0644 './resolv.conf.bak' 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' diff --git a/bluetooth/main.conf b/bluetooth/main.conf index 8cd132fe..321f6221 100644 --- a/bluetooth/main.conf +++ b/bluetooth/main.conf @@ -30,6 +30,12 @@ PageTimeout = 8192 # 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 @@ -56,11 +62,6 @@ NameResolving = 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 diff --git a/conf.d/bluetooth b/conf.d/bluetooth deleted file mode 100644 index b0cc7444..00000000 --- a/conf.d/bluetooth +++ /dev/null @@ -1,7 +0,0 @@ -# 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" diff --git a/conf.d/fsck b/conf.d/fsck index 5d42c9d0..16aa5752 100644 --- a/conf.d/fsck +++ b/conf.d/fsck @@ -13,6 +13,13 @@ #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. diff --git a/conf.d/rfcomm b/conf.d/rfcomm new file mode 100644 index 00000000..d87acdb2 --- /dev/null +++ b/conf.d/rfcomm @@ -0,0 +1,5 @@ +# Bind rfcomm devices (allowed values are "true" and "false") +RFCOMM_ENABLE=true + +# Config file for rfcomm +RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf" diff --git a/conf.d/udev b/conf.d/udev index 6fd14702..12c2afa1 100644 --- a/conf.d/udev +++ b/conf.d/udev @@ -11,15 +11,6 @@ persistent_net_disable="no" # 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. @@ -36,9 +27,6 @@ persistent_cd_disable="no" # 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" @@ -47,12 +35,12 @@ persistent_cd_disable="no" # 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. diff --git a/conf.d/urandom b/conf.d/urandom index fbaf4e81..f721a249 100644 --- a/conf.d/urandom +++ b/conf.d/urandom @@ -2,4 +2,4 @@ # (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" diff --git a/config-archive/etc/bluetooth/main.conf b/config-archive/etc/bluetooth/main.conf new file mode 100644 index 00000000..8cd132fe --- /dev/null +++ b/config-archive/etc/bluetooth/main.conf @@ -0,0 +1,66 @@ +[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 diff --git a/config-archive/etc/bluetooth/main.conf.dist b/config-archive/etc/bluetooth/main.conf.dist new file mode 100644 index 00000000..321f6221 --- /dev/null +++ b/config-archive/etc/bluetooth/main.conf.dist @@ -0,0 +1,67 @@ +[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 diff --git a/config-archive/etc/conf.d/fsck b/config-archive/etc/conf.d/fsck new file mode 100644 index 00000000..5d42c9d0 --- /dev/null +++ b/config-archive/etc/conf.d/fsck @@ -0,0 +1,27 @@ +# 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" diff --git a/config-archive/etc/conf.d/fsck.dist b/config-archive/etc/conf.d/fsck.dist new file mode 100644 index 00000000..16aa5752 --- /dev/null +++ b/config-archive/etc/conf.d/fsck.dist @@ -0,0 +1,34 @@ +# 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" diff --git a/config-archive/etc/conf.d/hwclock b/config-archive/etc/conf.d/hwclock new file mode 100644 index 00000000..e1dff136 --- /dev/null +++ b/config-archive/etc/conf.d/hwclock @@ -0,0 +1,22 @@ +# 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="" diff --git a/config-archive/etc/conf.d/hwclock.dist.new b/config-archive/etc/conf.d/hwclock.dist.new new file mode 100644 index 00000000..4e66ff95 --- /dev/null +++ b/config-archive/etc/conf.d/hwclock.dist.new @@ -0,0 +1,22 @@ +# 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="" diff --git a/config-archive/etc/conf.d/keymaps b/config-archive/etc/conf.d/keymaps new file mode 100644 index 00000000..002b2d40 --- /dev/null +++ b/config-archive/etc/conf.d/keymaps @@ -0,0 +1,24 @@ +# 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" diff --git a/config-archive/etc/conf.d/keymaps.dist.new b/config-archive/etc/conf.d/keymaps.dist.new new file mode 100644 index 00000000..430383df --- /dev/null +++ b/config-archive/etc/conf.d/keymaps.dist.new @@ -0,0 +1,23 @@ +# 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" diff --git a/config-archive/etc/conf.d/udev b/config-archive/etc/conf.d/udev new file mode 100644 index 00000000..6fd14702 --- /dev/null +++ b/config-archive/etc/conf.d/udev @@ -0,0 +1,64 @@ +# /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" + diff --git a/config-archive/etc/conf.d/udev.dist b/config-archive/etc/conf.d/udev.dist new file mode 100644 index 00000000..12c2afa1 --- /dev/null +++ b/config-archive/etc/conf.d/udev.dist @@ -0,0 +1,52 @@ +# /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" + diff --git a/config-archive/etc/conf.d/urandom b/config-archive/etc/conf.d/urandom new file mode 100644 index 00000000..fbaf4e81 --- /dev/null +++ b/config-archive/etc/conf.d/urandom @@ -0,0 +1,5 @@ +# 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" diff --git a/config-archive/etc/conf.d/urandom.dist b/config-archive/etc/conf.d/urandom.dist new file mode 100644 index 00000000..f721a249 --- /dev/null +++ b/config-archive/etc/conf.d/urandom.dist @@ -0,0 +1,5 @@ +# 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" diff --git a/config-archive/etc/cron.daily/logrotate.cron b/config-archive/etc/cron.daily/logrotate.cron new file mode 100755 index 00000000..359f3d04 --- /dev/null +++ b/config-archive/etc/cron.daily/logrotate.cron @@ -0,0 +1,6 @@ +#! /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 diff --git a/config-archive/etc/cron.daily/logrotate.cron.dist.new b/config-archive/etc/cron.daily/logrotate.cron.dist.new new file mode 100755 index 00000000..63cbe968 --- /dev/null +++ b/config-archive/etc/cron.daily/logrotate.cron.dist.new @@ -0,0 +1,3 @@ +#! /bin/sh + +/usr/sbin/logrotate /etc/logrotate.conf diff --git a/config-archive/etc/dbus-1/system.d/bluetooth.conf b/config-archive/etc/dbus-1/system.d/bluetooth.conf new file mode 100644 index 00000000..853f9268 --- /dev/null +++ b/config-archive/etc/dbus-1/system.d/bluetooth.conf @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config-archive/etc/dbus-1/system.d/bluetooth.conf.dist b/config-archive/etc/dbus-1/system.d/bluetooth.conf.dist new file mode 100644 index 00000000..664dbd98 --- /dev/null +++ b/config-archive/etc/dbus-1/system.d/bluetooth.conf.dist @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config-archive/etc/hotplug/usb/libsane.usermap b/config-archive/etc/hotplug/usb/libsane.usermap new file mode 100644 index 00000000..fd6f4c08 --- /dev/null +++ b/config-archive/etc/hotplug/usb/libsane.usermap @@ -0,0 +1,1372 @@ +# 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 diff --git a/config-archive/etc/hotplug/usb/libsane.usermap.dist b/config-archive/etc/hotplug/usb/libsane.usermap.dist new file mode 100644 index 00000000..88c90398 --- /dev/null +++ b/config-archive/etc/hotplug/usb/libsane.usermap.dist @@ -0,0 +1,1372 @@ +# 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 diff --git a/config-archive/etc/idmapd.conf b/config-archive/etc/idmapd.conf new file mode 100644 index 00000000..3e81a753 --- /dev/null +++ b/config-archive/etc/idmapd.conf @@ -0,0 +1,102 @@ +[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 = + +#-------------------------------------------------------------------# +# 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 = + +# absolute search base for groups +#LDAP_group_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 diff --git a/config-archive/etc/idmapd.conf.dist b/config-archive/etc/idmapd.conf.dist new file mode 100644 index 00000000..ebf97542 --- /dev/null +++ b/config-archive/etc/idmapd.conf.dist @@ -0,0 +1,114 @@ +[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 @REALM.A can be assumed to +# be the same user as @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 = + +#-------------------------------------------------------------------# +# 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 = + +# absolute search base for groups +#LDAP_group_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 diff --git a/config-archive/etc/init.d/bluetooth b/config-archive/etc/init.d/bluetooth new file mode 100755 index 00000000..6339f99c --- /dev/null +++ b/config-archive/etc/init.d/bluetooth @@ -0,0 +1,33 @@ +#!/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 +} diff --git a/config-archive/etc/init.d/bluetooth.dist b/config-archive/etc/init.d/bluetooth.dist new file mode 100755 index 00000000..9280f93b --- /dev/null +++ b/config-archive/etc/init.d/bluetooth.dist @@ -0,0 +1,19 @@ +#!/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 +} diff --git a/config-archive/etc/init.d/bootmisc b/config-archive/etc/init.d/bootmisc new file mode 100755 index 00000000..35af0975 --- /dev/null +++ b/config-archive/etc/init.d/bootmisc @@ -0,0 +1,171 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/bootmisc.dist b/config-archive/etc/init.d/bootmisc.dist new file mode 100755 index 00000000..0e03938f --- /dev/null +++ b/config-archive/etc/init.d/bootmisc.dist @@ -0,0 +1,204 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/consolefont b/config-archive/etc/init.d/consolefont new file mode 100755 index 00000000..ca9ee311 --- /dev/null +++ b/config-archive/etc/init.d/consolefont @@ -0,0 +1,67 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/consolefont.dist b/config-archive/etc/init.d/consolefont.dist new file mode 100755 index 00000000..f989d2d2 --- /dev/null +++ b/config-archive/etc/init.d/consolefont.dist @@ -0,0 +1,67 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/fsck b/config-archive/etc/init.d/fsck new file mode 100755 index 00000000..3960553d --- /dev/null +++ b/config-archive/etc/init.d/fsck @@ -0,0 +1,109 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/fsck.dist b/config-archive/etc/init.d/fsck.dist new file mode 100755 index 00000000..9cf35b86 --- /dev/null +++ b/config-archive/etc/init.d/fsck.dist @@ -0,0 +1,120 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/hwclock b/config-archive/etc/init.d/hwclock new file mode 100755 index 00000000..20a98591 --- /dev/null +++ b/config-archive/etc/init.d/hwclock @@ -0,0 +1,146 @@ +#!/sbin/runscript +# Copyright (c) 2007-2008 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/hwclock.dist b/config-archive/etc/init.d/hwclock.dist new file mode 100755 index 00000000..28d675a8 --- /dev/null +++ b/config-archive/etc/init.d/hwclock.dist @@ -0,0 +1,146 @@ +#!/sbin/runscript +# Copyright (c) 2007-2008 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/keymaps b/config-archive/etc/init.d/keymaps new file mode 100755 index 00000000..8ab72fd1 --- /dev/null +++ b/config-archive/etc/init.d/keymaps @@ -0,0 +1,70 @@ +#!/sbin/runscript +# Copyright (c) 2007-2008 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/keymaps.dist b/config-archive/etc/init.d/keymaps.dist new file mode 100755 index 00000000..211fdd36 --- /dev/null +++ b/config-archive/etc/init.d/keymaps.dist @@ -0,0 +1,70 @@ +#!/sbin/runscript +# Copyright (c) 2007-2008 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/modules b/config-archive/etc/init.d/modules new file mode 100755 index 00000000..3fa58674 --- /dev/null +++ b/config-archive/etc/init.d/modules @@ -0,0 +1,63 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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)" +} diff --git a/config-archive/etc/init.d/modules.dist b/config-archive/etc/init.d/modules.dist new file mode 100755 index 00000000..17f60ce8 --- /dev/null +++ b/config-archive/etc/init.d/modules.dist @@ -0,0 +1,63 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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)" +} diff --git a/config-archive/etc/init.d/net.lo b/config-archive/etc/init.d/net.lo new file mode 100755 index 00000000..6f8b5b10 --- /dev/null +++ b/config-archive/etc/init.d/net.lo @@ -0,0 +1,737 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/net.lo.dist b/config-archive/etc/init.d/net.lo.dist new file mode 100755 index 00000000..23143639 --- /dev/null +++ b/config-archive/etc/init.d/net.lo.dist @@ -0,0 +1,765 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/network b/config-archive/etc/init.d/network new file mode 100755 index 00000000..9f8ac713 --- /dev/null +++ b/config-archive/etc/init.d/network @@ -0,0 +1,352 @@ +#!/sbin/runscript +# Copyright (c) 2009 Roy Marples +# 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 /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 +} diff --git a/config-archive/etc/init.d/network.dist b/config-archive/etc/init.d/network.dist new file mode 100755 index 00000000..7ba4f48c --- /dev/null +++ b/config-archive/etc/init.d/network.dist @@ -0,0 +1,358 @@ +#!/sbin/runscript +# Copyright (c) 2009 Roy Marples +# 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 /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 +} diff --git a/config-archive/etc/init.d/numlock b/config-archive/etc/init.d/numlock new file mode 100755 index 00000000..bfa6add0 --- /dev/null +++ b/config-archive/etc/init.d/numlock @@ -0,0 +1,42 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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" +} diff --git a/config-archive/etc/init.d/numlock.dist b/config-archive/etc/init.d/numlock.dist new file mode 100755 index 00000000..e354dfd1 --- /dev/null +++ b/config-archive/etc/init.d/numlock.dist @@ -0,0 +1,42 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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" +} diff --git a/config-archive/etc/init.d/staticroute b/config-archive/etc/init.d/staticroute new file mode 100755 index 00000000..558d57e5 --- /dev/null +++ b/config-archive/etc/init.d/staticroute @@ -0,0 +1,104 @@ +#!/sbin/runscript +# Copyright (c) 2009 Roy Marples +# 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" +} diff --git a/config-archive/etc/init.d/staticroute.dist b/config-archive/etc/init.d/staticroute.dist new file mode 100755 index 00000000..3a5d326a --- /dev/null +++ b/config-archive/etc/init.d/staticroute.dist @@ -0,0 +1,109 @@ +#!/sbin/runscript +# Copyright (c) 2009 Roy Marples +# 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" +} diff --git a/config-archive/etc/init.d/sysfs b/config-archive/etc/init.d/sysfs new file mode 100755 index 00000000..2433d847 --- /dev/null +++ b/config-archive/etc/init.d/sysfs @@ -0,0 +1,64 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/sysfs.dist b/config-archive/etc/init.d/sysfs.dist new file mode 100755 index 00000000..dd3fc0ee --- /dev/null +++ b/config-archive/etc/init.d/sysfs.dist @@ -0,0 +1,106 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/termencoding b/config-archive/etc/init.d/termencoding new file mode 100755 index 00000000..2c2e6b09 --- /dev/null +++ b/config-archive/etc/init.d/termencoding @@ -0,0 +1,48 @@ +#!/sbin/runscript +# Copyright (c) 2008-2009 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/termencoding.dist b/config-archive/etc/init.d/termencoding.dist new file mode 100755 index 00000000..d7951d1e --- /dev/null +++ b/config-archive/etc/init.d/termencoding.dist @@ -0,0 +1,48 @@ +#!/sbin/runscript +# Copyright (c) 2008-2009 Roy Marples +# 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 +} diff --git a/config-archive/etc/init.d/udev b/config-archive/etc/init.d/udev new file mode 100755 index 00000000..833cca0c --- /dev/null +++ b/config-archive/etc/init.d/udev @@ -0,0 +1,272 @@ +#!/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 $? +} + diff --git a/config-archive/etc/init.d/udev-mount b/config-archive/etc/init.d/udev-mount new file mode 100755 index 00000000..52cf26b7 --- /dev/null +++ b/config-archive/etc/init.d/udev-mount @@ -0,0 +1,107 @@ +#!/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 +} diff --git a/config-archive/etc/init.d/udev-mount.dist b/config-archive/etc/init.d/udev-mount.dist new file mode 100755 index 00000000..62742bd6 --- /dev/null +++ b/config-archive/etc/init.d/udev-mount.dist @@ -0,0 +1,70 @@ +#!/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 +} diff --git a/config-archive/etc/init.d/udev-postmount b/config-archive/etc/init.d/udev-postmount new file mode 100755 index 00000000..12a30f66 --- /dev/null +++ b/config-archive/etc/init.d/udev-postmount @@ -0,0 +1,53 @@ +#!/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 diff --git a/config-archive/etc/init.d/udev-postmount.dist b/config-archive/etc/init.d/udev-postmount.dist new file mode 100755 index 00000000..d689681f --- /dev/null +++ b/config-archive/etc/init.d/udev-postmount.dist @@ -0,0 +1,66 @@ +#!/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 diff --git a/config-archive/etc/init.d/udev.dist b/config-archive/etc/init.d/udev.dist new file mode 100755 index 00000000..1912c8be --- /dev/null +++ b/config-archive/etc/init.d/udev.dist @@ -0,0 +1,275 @@ +#!/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 +} diff --git a/config-archive/etc/init.d/urandom b/config-archive/etc/init.d/urandom new file mode 100755 index 00000000..99e11274 --- /dev/null +++ b/config-archive/etc/init.d/urandom @@ -0,0 +1,45 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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" +} diff --git a/config-archive/etc/init.d/urandom.dist b/config-archive/etc/init.d/urandom.dist new file mode 100755 index 00000000..20e4325c --- /dev/null +++ b/config-archive/etc/init.d/urandom.dist @@ -0,0 +1,45 @@ +#!/sbin/runscript +# Copyright (c) 2007-2009 Roy Marples +# 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" +} diff --git a/config-archive/etc/logrotate.conf b/config-archive/etc/logrotate.conf new file mode 100644 index 00000000..b6162de9 --- /dev/null +++ b/config-archive/etc/logrotate.conf @@ -0,0 +1,53 @@ +# $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. diff --git a/config-archive/etc/logrotate.conf.dist.new b/config-archive/etc/logrotate.conf.dist.new new file mode 100644 index 00000000..25dd1349 --- /dev/null +++ b/config-archive/etc/logrotate.conf.dist.new @@ -0,0 +1,44 @@ +# $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. diff --git a/config-archive/etc/lvm/lvm.conf b/config-archive/etc/lvm/lvm.conf new file mode 100644 index 00000000..567144ba --- /dev/null +++ b/config-archive/etc/lvm/lvm.conf @@ -0,0 +1,525 @@ +# 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" +} diff --git a/config-archive/etc/lvm/lvm.conf.dist b/config-archive/etc/lvm/lvm.conf.dist new file mode 100644 index 00000000..cec25782 --- /dev/null +++ b/config-archive/etc/lvm/lvm.conf.dist @@ -0,0 +1,666 @@ +# 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 ' 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" +} diff --git a/config-archive/etc/rc.conf b/config-archive/etc/rc.conf new file mode 100644 index 00000000..9d8afee3 --- /dev/null +++ b/config-archive/etc/rc.conf @@ -0,0 +1,148 @@ +# 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 + diff --git a/config-archive/etc/rc.conf.dist.new b/config-archive/etc/rc.conf.dist.new new file mode 100644 index 00000000..d3f5eb93 --- /dev/null +++ b/config-archive/etc/rc.conf.dist.new @@ -0,0 +1,135 @@ +# 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 diff --git a/config-archive/etc/sensors3.conf b/config-archive/etc/sensors3.conf new file mode 100644 index 00000000..35f4908d --- /dev/null +++ b/config-archive/etc/sensors3.conf @@ -0,0 +1,434 @@ +# 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" diff --git a/config-archive/etc/sensors3.conf.dist b/config-archive/etc/sensors3.conf.dist new file mode 100644 index 00000000..c1e08f98 --- /dev/null +++ b/config-archive/etc/sensors3.conf.dist @@ -0,0 +1,519 @@ +# 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" diff --git a/config-archive/usr/share/config/kdm/backgroundrc b/config-archive/usr/share/config/kdm/backgroundrc new file mode 100644 index 00000000..359569c0 --- /dev/null +++ b/config-archive/usr/share/config/kdm/backgroundrc @@ -0,0 +1,18 @@ +[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 diff --git a/config-archive/usr/share/config/kdm/backgroundrc.dist.new b/config-archive/usr/share/config/kdm/backgroundrc.dist.new new file mode 100644 index 00000000..8285ea30 --- /dev/null +++ b/config-archive/usr/share/config/kdm/backgroundrc.dist.new @@ -0,0 +1,18 @@ +[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 diff --git a/config-archive/usr/share/config/kdm/kdmrc b/config-archive/usr/share/config/kdm/kdmrc new file mode 100644 index 00000000..982cfc86 --- /dev/null +++ b/config-archive/usr/share/config/kdm/kdmrc @@ -0,0 +1,78 @@ +[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 diff --git a/config-archive/usr/share/config/kdm/kdmrc.dist.new b/config-archive/usr/share/config/kdm/kdmrc.dist.new new file mode 100644 index 00000000..6a85895a --- /dev/null +++ b/config-archive/usr/share/config/kdm/kdmrc.dist.new @@ -0,0 +1,593 @@ +# 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 %r, other names will be tried - this time expanding %r +# to 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. @ means all users in that group. +# Default is "" +#SelectedUsers=root,johndoe +# For ShowUsers=NotHidden. @ 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 /$USER.face[.icon] +# "PreferAdmin" - prefer , 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. @ 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 diff --git a/cups/printers.conf b/cups/printers.conf index 9a7ec2a2..7fbfe24c 100644 --- a/cups/printers.conf +++ b/cups/printers.conf @@ -1,5 +1,5 @@ # 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 Info Kyocera FS-1020D diff --git a/cups/printers.conf.O b/cups/printers.conf.O index a467c0d6..8db999f5 100644 --- a/cups/printers.conf.O +++ b/cups/printers.conf.O @@ -1,5 +1,5 @@ # 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 Info Kyocera FS-1020D diff --git a/cups/subscriptions.conf b/cups/subscriptions.conf index 8ca29e05..9d4abe28 100644 --- a/cups/subscriptions.conf +++ b/cups/subscriptions.conf @@ -1,3 +1,3 @@ # 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 diff --git a/cups/subscriptions.conf.O b/cups/subscriptions.conf.O index fb889dde..715a89c2 100644 --- a/cups/subscriptions.conf.O +++ b/cups/subscriptions.conf.O @@ -1,19 +1,11 @@ # Subscription configuration file for CUPS v1.4.8 -# Written by cupsd on 2012-01-26 21:19 -NextSubscriptionId 125 - +# Written by cupsd on 2012-01-30 18:44 +NextSubscriptionId 126 + 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 - - -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 diff --git a/dbus-1/system.d/bluetooth.conf b/dbus-1/system.d/bluetooth.conf index 853f9268..664dbd98 100644 --- a/dbus-1/system.d/bluetooth.conf +++ b/dbus-1/system.d/bluetooth.conf @@ -13,7 +13,9 @@ + + diff --git a/gconf/gconf.xml.defaults/%gconf-tree.xml b/gconf/gconf.xml.defaults/%gconf-tree.xml index c873f957..88831577 100644 --- a/gconf/gconf.xml.defaults/%gconf-tree.xml +++ b/gconf/gconf.xml.defaults/%gconf-tree.xml @@ -2332,72 +2332,72 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -17756,147 +17756,155 @@ The parser is fairly liberal and allows lower or upper case, and also abbreviati - + evince-thumbnailer -s %s %u %o + - + + - + evince-thumbnailer -s %s %u %o + - + + - + evince-thumbnailer -s %s %u %o + - + + - + evince-thumbnailer -s %s %u %o + - + + - + evince-thumbnailer -s %s %u %o - + - + evince-thumbnailer -s %s %u %o - + - + evince-thumbnailer -s %s %u %o - + - + evince-thumbnailer -s %s %u %o - + - + evince-thumbnailer -s %s %u %o - + - + evince-thumbnailer -s %s %u %o - + - + evince-thumbnailer -s %s %u %o @@ -17904,7 +17912,7 @@ The parser is fairly liberal and allows lower or upper case, and also abbreviati Valid command plus arguments for the PDF Document thumbnailer. See Nautilus thumbnailer documentation for more information. - + Boolean options available: true enables thumbnailing and false disables the creation of new thumbnails @@ -17912,7 +17920,7 @@ The parser is fairly liberal and allows lower or upper case, and also abbreviati - + evince-thumbnailer -s %s %u %o @@ -17920,7 +17928,7 @@ The parser is fairly liberal and allows lower or upper case, and also abbreviati Valid command plus arguments for the PDF Document thumbnailer. See Nautilus thumbnailer documentation for more information. - + Boolean options available: true enables thumbnailing and false disables the creation of new thumbnails @@ -17928,7 +17936,7 @@ The parser is fairly liberal and allows lower or upper case, and also abbreviati - + evince-thumbnailer -s %s %u %o @@ -17936,7 +17944,7 @@ The parser is fairly liberal and allows lower or upper case, and also abbreviati Valid command plus arguments for the PDF Document thumbnailer. See Nautilus thumbnailer documentation for more information. - + Boolean options available: true enables thumbnailing and false disables the creation of new thumbnails @@ -17944,56 +17952,56 @@ The parser is fairly liberal and allows lower or upper case, and also abbreviati - + evince-thumbnailer -s %s %u %o - + - + evince-thumbnailer -s %s %u %o - + - + evince-thumbnailer -s %s %u %o - + - + evince-thumbnailer -s %s %u %o - + diff --git a/hotplug/usb/libsane.usermap b/hotplug/usb/libsane.usermap index fd6f4c08..88c90398 100644 --- a/hotplug/usb/libsane.usermap +++ b/hotplug/usb/libsane.usermap @@ -1,5 +1,5 @@ # 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. diff --git a/idmapd.conf b/idmapd.conf index 3e81a753..ebf97542 100644 --- a/idmapd.conf +++ b/idmapd.conf @@ -1,7 +1,19 @@ [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 @REALM.A can be assumed to +# be the same user as @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] diff --git a/init.d/bluetooth b/init.d/bluetooth index 6339f99c..9280f93b 100755 --- a/init.d/bluetooth +++ b/init.d/bluetooth @@ -1,7 +1,7 @@ #!/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 @@ -9,25 +9,11 @@ depend() { } 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 } diff --git a/init.d/bootmisc b/init.d/bootmisc index 35af0975..0e03938f 100755 --- a/init.d/bootmisc +++ b/init.d/bootmisc @@ -10,7 +10,7 @@ depend() keyword -prefix -timeout } -dir_writeable() +dir_writable() { mkdir "$1"/.test.$$ 2>/dev/null && rmdir "$1"/.test.$$ } @@ -25,7 +25,7 @@ cleanup_tmp_dir() 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 @@ -72,6 +72,26 @@ mkutmp() 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 @@ -79,8 +99,16 @@ start() 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" @@ -89,7 +117,12 @@ start() 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 @@ -131,7 +164,7 @@ start() 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 @@ -144,7 +177,7 @@ start() 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 diff --git a/init.d/consolefont b/init.d/consolefont index ca9ee311..f989d2d2 100755 --- a/init.d/consolefont +++ b/init.d/consolefont @@ -49,7 +49,7 @@ start() retval=1 break fi - x=$(($x + 1)) + : $(( x += 1 )) done eend $retval diff --git a/init.d/fsck b/init.d/fsck index 3960553d..9cf35b86 100755 --- a/init.d/fsck +++ b/init.d/fsck @@ -48,8 +48,13 @@ start() 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 @@ -58,10 +63,16 @@ start() 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.$$ @@ -91,7 +102,7 @@ start() _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 diff --git a/init.d/hwclock b/init.d/hwclock index 20a98591..28d675a8 100755 --- a/init.d/hwclock +++ b/init.d/hwclock @@ -85,7 +85,7 @@ start() 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 @@ -99,7 +99,7 @@ start() else _hwclock --systz $utc_cmd $clock_args fi - retval=$(($retval + $?)) + : $(( retval += $? )) fi eend $retval "Failed to set the system clock" diff --git a/init.d/keymaps b/init.d/keymaps index 8ab72fd1..211fdd36 100755 --- a/init.d/keymaps +++ b/init.d/keymaps @@ -47,7 +47,7 @@ start() n=1 while [ $n -le $ttyn ]; do kbd_mode $kmode -C $ttydev$n - n=$(($n + 1)) + : $(( n += 1 )) done eend 0 diff --git a/init.d/modules b/init.d/modules index 3fa58674..17f60ce8 100755 --- a/init.d/modules +++ b/init.d/modules @@ -57,7 +57,7 @@ start() [ -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)" } diff --git a/init.d/net.lo b/init.d/net.lo index 6f8b5b10..23143639 100755 --- a/init.d/net.lo +++ b/init.d/net.lo @@ -21,11 +21,11 @@ depend() 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 @@ -115,7 +115,7 @@ _wait_for_carrier() eend 0 return 0 fi - timeout=$((${timeout} - 1)) + : $(( timeout -= 1 )) [ "${efunc}" = "einfon" ] && printf "." done @@ -144,9 +144,9 @@ _netmask2cidr() 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 @@ -169,6 +169,36 @@ _configure_variables() 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}")" @@ -277,7 +307,7 @@ _gen_module_list() 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}" ) @@ -304,18 +334,17 @@ _load_modules() 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 @@ -323,15 +352,10 @@ _load_modules() 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 @@ -407,16 +431,18 @@ _load_config() 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 @@ -438,7 +464,7 @@ _load_config() # 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}= @@ -446,7 +472,7 @@ _load_config() 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}= @@ -488,7 +514,9 @@ start() { 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 @@ -502,7 +530,7 @@ start() # 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 @@ -541,7 +569,7 @@ start() if [ -n "${our_metric}" ]; then metric=${our_metric} elif [ "${IFACE}" != "lo" -a "${IFACE}" != "lo0" ]; then - metric=$((${metric} + $(_ifindex))) + : $(( metric += $(_ifindex) )) fi while true; do @@ -581,11 +609,11 @@ start() 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 diff --git a/init.d/network b/init.d/network index 9f8ac713..7ba4f48c 100755 --- a/init.d/network +++ b/init.d/network @@ -219,6 +219,12 @@ start() 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 @@ -281,7 +287,7 @@ start() tentative || break [ $r = 5 ] && vebegin "Waiting for tentative addresses" sleep 1 - r=$(($r - 1)) + : $(( r -= 1 )) done if [ $r != 5 ]; then [ $r != 0 ] diff --git a/init.d/numlock b/init.d/numlock index bfa6add0..e354dfd1 100755 --- a/init.d/numlock +++ b/init.d/numlock @@ -21,7 +21,7 @@ _setleds() while [ $i -le $ttyn ]; do setleds -D "$1"num < $dev$i || retval=1 - i=$(($i + 1)) + : $(( i += 1 )) done return $retval diff --git a/init.d/rfcomm b/init.d/rfcomm new file mode 100755 index 00000000..d3b819e1 --- /dev/null +++ b/init.d/rfcomm @@ -0,0 +1,27 @@ +#!/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 $? +} diff --git a/init.d/staticroute b/init.d/staticroute index 558d57e5..3a5d326a 100755 --- a/init.d/staticroute +++ b/init.d/staticroute @@ -93,6 +93,11 @@ do_routes() 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" } diff --git a/init.d/sysfs b/init.d/sysfs index 2433d847..dd3fc0ee 100755 --- a/init.d/sysfs +++ b/init.d/sysfs @@ -50,6 +50,43 @@ mount_misc() 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() @@ -59,6 +96,11 @@ start() retval=$? if [ $retval -eq 0 ]; then mount_misc + retval=$? + fi + if [ $retval -eq 0 ]; then + mount_cgroups + retval=$? fi return $retval } diff --git a/init.d/termencoding b/init.d/termencoding index 2c2e6b09..d7951d1e 100755 --- a/init.d/termencoding +++ b/init.d/termencoding @@ -31,7 +31,7 @@ start() 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 diff --git a/init.d/udev b/init.d/udev index 833cca0c..1912c8be 100755 --- a/init.d/udev +++ b/init.d/udev @@ -2,48 +2,83 @@ # 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() @@ -51,7 +86,7 @@ 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" \ @@ -61,8 +96,8 @@ rules_disable_switch() fi } -# only called on openrc -is_service_enabled() { +is_service_enabled() +{ local svc="$1" [ ! -e "/etc/init.d/${svc}" ] && return 1 @@ -72,35 +107,59 @@ is_service_enabled() { 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 @@ -109,71 +168,27 @@ populate_dev() 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 @@ -196,7 +211,7 @@ check_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 | \ @@ -224,49 +239,37 @@ check_udev_works() 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 $? -} - diff --git a/init.d/udev-dev-tarball b/init.d/udev-dev-tarball deleted file mode 100755 index d32c7b20..00000000 --- a/init.d/udev-dev-tarball +++ /dev/null @@ -1,95 +0,0 @@ -#!/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}" -} - diff --git a/init.d/udev-mount b/init.d/udev-mount index 52cf26b7..62742bd6 100755 --- a/init.d/udev-mount +++ b/init.d/udev-mount @@ -2,32 +2,13 @@ # 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 @@ -72,22 +53,8 @@ seed_dev() 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 @@ -98,10 +65,6 @@ _start() HAVE_SELINUX=false fi - # make sure it exists - mkdir -p /dev/.udev /dev/.udev/rules.d - seed_dev - return 0 } diff --git a/init.d/udev-postmount b/init.d/udev-postmount index 12a30f66..d689681f 100755 --- a/init.d/udev-postmount +++ b/init.d/udev-postmount @@ -1,11 +1,19 @@ #!/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() @@ -15,12 +23,13 @@ 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-} @@ -31,23 +40,27 @@ store_persistent_rules() { 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 diff --git a/init.d/urandom b/init.d/urandom index 99e11274..20e4325c 100755 --- a/init.d/urandom +++ b/init.d/urandom @@ -2,7 +2,7 @@ # Copyright (c) 2007-2009 Roy Marples # 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() @@ -16,7 +16,7 @@ save_seed() 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 diff --git a/java-config-2/current-system-vm b/java-config-2/current-system-vm index 7b448584..e98206a2 120000 --- a/java-config-2/current-system-vm +++ b/java-config-2/current-system-vm @@ -1 +1 @@ -/usr/lib/jvm/icedtea6-bin \ No newline at end of file +/usr/lib/jvm//sun-jdk-1.6 \ No newline at end of file diff --git a/logrotate.d/apache2 b/logrotate.d/apache2 index cbb63ee6..847023db 100644 --- a/logrotate.d/apache2 +++ b/logrotate.d/apache2 @@ -2,16 +2,30 @@ # 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 diff --git a/lvm/lvm.conf b/lvm/lvm.conf index 567144ba..cec25782 100644 --- a/lvm/lvm.conf +++ b/lvm/lvm.conf @@ -6,6 +6,9 @@ # # 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 @@ -19,6 +22,16 @@ devices { # 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 @@ -100,6 +113,10 @@ devices { # 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 @@ -113,9 +130,9 @@ devices { 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 @@ -124,6 +141,7 @@ devices { # 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 @@ -133,10 +151,70 @@ devices { # 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 { @@ -327,9 +405,47 @@ global { # 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 ' 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 @@ -347,6 +463,12 @@ activation { # 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 @@ -421,6 +543,25 @@ activation { 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 diff --git a/make.conf b/make.conf index b76c8aa7..56b4d846 100644 --- a/make.conf +++ b/make.conf @@ -31,6 +31,7 @@ ACCEPT_LICENSE=" \ AdobeFlash-10 \ AdobeFlash-10.1 \ skype-eula \ + Oracle-BCLA-JavaSE \ " EMERGE_DEFAULT_OPTS="--with-bdeps y " diff --git a/motd b/motd index 53358159..e074835e 100644 --- a/motd +++ b/motd @@ -7,27 +7,17 @@ Gentoo Base System release 2.0.3 |____/|_| \__,_|_| |_|_| -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 diff --git a/portage/package.keywords b/portage/package.keywords index a6751e85..9aff1338 100644 --- a/portage/package.keywords +++ b/portage/package.keywords @@ -1,4 +1,7 @@ +~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 diff --git a/portage/package.use b/portage/package.use index cccdb2a6..64b5e2d4 100644 --- a/portage/package.use +++ b/portage/package.use @@ -45,7 +45,7 @@ dev-java/ant-tasks javamail 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 diff --git a/revdep-rebuild/61-sun-jdk-1.6 b/revdep-rebuild/61-sun-jdk-1.6 new file mode 100644 index 00000000..f32aa925 --- /dev/null +++ b/revdep-rebuild/61-sun-jdk-1.6 @@ -0,0 +1 @@ +SEARCH_DIRS_MASK="/opt/sun-jdk-1.6.0.30" diff --git a/revdep-rebuild/61-sun-jre-bin-1.6 b/revdep-rebuild/61-sun-jre-bin-1.6 new file mode 100644 index 00000000..98225904 --- /dev/null +++ b/revdep-rebuild/61-sun-jre-bin-1.6 @@ -0,0 +1 @@ +SEARCH_DIRS_MASK="/opt/sun-jre-bin-1.6.0.30" diff --git a/sensors3.conf b/sensors3.conf index 35f4908d..c1e08f98 100644 --- a/sensors3.conf +++ b/sensors3.conf @@ -49,6 +49,20 @@ chip "w83793-*" 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" @@ -209,7 +223,8 @@ chip "smsc47m192-*" 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" @@ -228,6 +243,14 @@ chip "lm85-*" "lm85b-*" "lm85c-*" "adm1027-*" "adt7463-*" "adt7468-*" "emc6d100- label temp2 "M/B Temp" +chip "emc6w201-*" + + label in2 "+3.3V" + label in3 "+5V" + + label temp6 "M/B Temp" + + chip "pc87365-*" "pc87366-*" # Voltage inputs @@ -266,7 +289,26 @@ chip "adm1030-*" "adm1031-*" 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" @@ -284,6 +326,23 @@ chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*" 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" @@ -383,7 +442,22 @@ chip "sch5027-*" 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" @@ -394,7 +468,7 @@ chip "f71882fg-*" compute in8 @*2, @/2 -chip "f8000-*" +chip "f71858fg-*" "f8000-*" label in0 "+3.3V" label in1 "3VSB" @@ -405,6 +479,17 @@ chip "f8000-*" 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" diff --git a/texmf/ls-R b/texmf/ls-R index ad5918c6..bd5e06be 100644 --- a/texmf/ls-R +++ b/texmf/ls-R @@ -22,8 +22,6 @@ config ./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 @@ -42,9 +40,6 @@ language.texlive-langenglish.dat 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 diff --git a/texmf/web2c/fmtutil.cnf b/texmf/web2c/fmtutil.cnf index 71c0d452..0eb80c2f 100644 --- a/texmf/web2c/fmtutil.cnf +++ b/texmf/web2c/fmtutil.cnf @@ -17,13 +17,10 @@ cont-en xetex cont-usr.tex -8bit *cont-en.ini #! 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