diff --git a/unmaintained/sane/20-segfault-avahi-fix-kodakio.patch b/unmaintained/sane/20-segfault-avahi-fix-kodakio.patch
deleted file mode 100644
index 23f9d1ca9e3b45e53dc0be5fe440670cfa664a81..0000000000000000000000000000000000000000
--- a/unmaintained/sane/20-segfault-avahi-fix-kodakio.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 37523b867d411c2f82d08128246be7e38bc9812c Mon Sep 17 00:00:00 2001
-From: Paul Newall <quandry@ntlworld.com>
-Date: Mon, 14 Oct 2013 22:22:53 +0100
-Subject: [PATCH] Bugfix in kodakaio.c to fix segfault when non kodak scanners
- return unexpected data via avahi auto discovery
-
----
- backend/kodakaio.c             |   43 ++++++++++++++++++++++++++++++----------
- doc/descriptions/kodakaio.desc |    2 +-
- 3 files changed, 37 insertions(+), 12 deletions(-)
-
-diff --git a/backend/kodakaio.c b/backend/kodakaio.c
-index 8c4583a..b442e50 100644
---- a/backend/kodakaio.c
-+++ b/backend/kodakaio.c
-@@ -127,7 +127,7 @@ for ubuntu 12.10
- 
- #define KODAKAIO_VERSION	02
- #define KODAKAIO_REVISION	4
--#define KODAKAIO_BUILD		6
-+#define KODAKAIO_BUILD		7
- 
- /* for usb (but also used for net though it's not required). */
- #define MAX_BLOCK_SIZE		32768
-@@ -2184,6 +2184,7 @@ static void resolve_callback(
-     AvahiLookupResultFlags flags,
-     AVAHI_GCC_UNUSED void* userdata) {
- 
-+	AvahiStringList *vid_pair_list = NULL, *pid_pair_list = NULL;
- 	char *pidkey, *pidvalue;
- 	char *vidkey, *vidvalue;
- 	size_t valuesize;
-@@ -2204,20 +2205,40 @@ static void resolve_callback(
-             avahi_address_snprint(a, sizeof(a), address);
- 
- /* Output short for Kodak ESP */
--	DBG(min(10,DBG_AUTO), "%s:%u  %s  ", a,port,host_name);
--	avahi_string_list_get_pair(avahi_string_list_find(txt, "vid"), 
--		&vidkey, &vidvalue, &valuesize);
--	DBG(min(10,DBG_AUTO), "%s=%s  ", vidkey, vidvalue);
--	avahi_string_list_get_pair(avahi_string_list_find(txt, "pid"), 
--		&pidkey, &pidvalue, &valuesize);
--	DBG(min(10,DBG_AUTO), "%s=%s\n", pidkey, pidvalue);
-+	DBG(min(10,DBG_AUTO), "%s:%u  %s\n", a,port,host_name);
- 
-+	vid_pair_list = avahi_string_list_find(txt, "vid");
-+	if(vid_pair_list != NULL) {
-+		avahi_string_list_get_pair(vid_pair_list, &vidkey, &vidvalue, &valuesize);
-+		DBG(min(10,DBG_AUTO), "%s=%s  ", vidkey, vidvalue);
-+	}
-+	else	DBG(min(10,DBG_AUTO), "failed to find key vid\n");
-+
-+	pid_pair_list = avahi_string_list_find(txt, "pid");
-+	if(pid_pair_list != NULL) {
-+		avahi_string_list_get_pair(pid_pair_list, &pidkey, &pidvalue, &valuesize);
-+		DBG(min(10,DBG_AUTO), "%s=%s\n", pidkey, pidvalue);
-+	}
-+	else	DBG(min(10,DBG_AUTO), "failed to find key pid\n");
-+
-+	if(pid_pair_list != NULL && vid_pair_list != NULL) {
- 		ProcessAvahiDevice(name, vidvalue, pidvalue, a);
--	avahi_free(vidkey); avahi_free(vidvalue);
--	avahi_free(pidkey); avahi_free(pidvalue);
-+	}
-+	else DBG(min(10,DBG_AUTO), "didn't call ProcessAvahiDevice\n");
-+
-+	if(vid_pair_list != NULL) {
-+		avahi_free(vidkey); 
-+		avahi_free(vidvalue);
-+		DBG(min(15,DBG_AUTO), "vidkey and vidvalue freed\n");
-+	}
-+	if(pid_pair_list != NULL) {
-+		avahi_free(pidkey); 
-+		avahi_free(pidvalue);
-+		DBG(min(15,DBG_AUTO), "pidkey and pidvalue freed\n");
-+	}
-         }
-     }
--
-+    DBG(min(10,DBG_AUTO), "ending resolve_callback\n");
-     avahi_service_resolver_free(r);
- }
- 
-diff --git a/doc/descriptions/kodakaio.desc b/doc/descriptions/kodakaio.desc
-index 7882513..5fb18ed 100644
---- a/doc/descriptions/kodakaio.desc
-+++ b/doc/descriptions/kodakaio.desc
-@@ -1,6 +1,6 @@
- :backend "kodakaio"
- :url "http://sourceforge.net/projects/cupsdriverkodak/" 
--:version "2.4.6"
-+:version "2.4.7"
- :manpage "sane-kodakaio"
- :comment "Backend for Kodak AiO ESP and Hero printers. Also possibly Advent AWL10"
- :devicetype :scanner
--- 
-1.7.10.4
-
diff --git a/unmaintained/sane/30-musl-header-fixes.patch b/unmaintained/sane/30-musl-header-fixes.patch
deleted file mode 100644
index 6e1036104385d98fab671b32141d3e4f9c5972aa..0000000000000000000000000000000000000000
--- a/unmaintained/sane/30-musl-header-fixes.patch
+++ /dev/null
@@ -1,51 +0,0 @@
---- ./include/sane/sanei_udp.h.orig
-+++ ./include/sane/sanei_udp.h
-@@ -19,6 +19,7 @@
- #define sanei_udp_h
- 
- #include <sane/sane.h>
-+#include <sys/types.h>
- 
- #ifdef HAVE_WINSOCK2_H
- #include <winsock2.h>
---- ./backend/hp5400_sanei.c.orig
-+++ ./backend/hp5400_sanei.c
-@@ -57,6 +57,7 @@
- #include "hp5400_debug.h"
- #include <stdio.h>
- #include "../include/sane/sanei_usb.h"
-+#include <sys/types.h>
- 
- #define CMD_INITBULK1   0x0087	/* send 0x14 */
- #define CMD_INITBULK2   0x0083	/* send 0x24 */
---- ./backend/hp5590_low.c.orig
-+++ ./backend/hp5590_low.c
-@@ -50,6 +50,7 @@
- #ifdef HAVE_NETINET_IN_H
- # include <netinet/in.h>
- #endif /* HAVE_NETINET_IN_H */
-+#include <sys/types.h>
- 
- #include "byteorder.h"
- 
---- ./backend/kvs20xx_cmd.h.orig
-+++ ./backend/kvs20xx_cmd.h
-@@ -9,6 +9,8 @@
-    Panasonic KV-S20xx USB-SCSI scanners.
- */
- 
-+#include <sys/types.h>
-+
- #define COMMAND_BLOCK	1
- #define DATA_BLOCK	2
- #define RESPONSE_BLOCK	3
---- ./backend/kvs40xx.h.orig
-+++ ./backend/kvs40xx.h
-@@ -10,6 +10,7 @@
- 
- #include "../include/sane/config.h"
- #include <semaphore.h>
-+#include <sys/types.h>
- 
- #undef  BACKEND_NAME
- #define BACKEND_NAME kvs40xx
diff --git a/unmaintained/sane/APKBUILD b/unmaintained/sane/APKBUILD
index a6fee51fd304b955ad71fd22ed5a32ac53971ac3..a093fefb830bf69823b62fa5949481a45a152651 100644
--- a/unmaintained/sane/APKBUILD
+++ b/unmaintained/sane/APKBUILD
@@ -1,79 +1,115 @@
 # Contributor: Fabio Riga <rifabio@dpersonam.me>
-# Maintainer:
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Maintainer: Valery Kartel <valery.kartel@gmail.com>
 pkgname=sane
-pkgver=1.0.24
-pkgrel=1
-pkgdesc="Scanner Access Now Easy"
+pkgver=1.0.25
+pkgrel=0
+pkgdesc="Scanner Access Now Easy - an universal scanner interface"
 url="http://www.sane-project.org/"
 arch="all"
 license="GPL"
 depends=""
-depends_dev="tiff-dev libjpeg-turbo-dev libgphoto2-dev libusb-dev cups-dev
-	v4l-utils-dev avahi-dev bash net-snmp-dev"
-makedepends="$depends_dev"
-install=""
-subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc"
-source="https://alioth.debian.org/frs/download.php/file/3958/$pkgname-backends-$pkgver.tar.gz
-	10-network.patch
-	20-segfault-avahi-fix-kodakio.patch
-	30-musl-header-fixes.patch
+depends_dev=""
+makedepends="libtool libusb-dev v4l-utils-dev net-snmp-dev avahi-dev libjpeg-turbo-dev tiff-dev libgphoto2-dev"
+install="$pkgname-saned.pre-install $pkgname.pre-install"
+pkgusers="saned"
+pkggroups="scanner"
+_backends="abaton agfafocus apple artec artec_eplus48u as6e avision bh canon canon630u canon_dr cardscan
+	coolscan coolscan2 coolscan3 dc25 dc210 dc240 dell1600n_net dmc epjitsu epson epson2 epsonds
+	fujitsu genesys gphoto2 gt68xx hp hp3500 hp3900 hp4200 hp5400 hp5590 hpljm1005 hs2p ibm kodak kodakaio
+	kvs1025 kvs20xx kvs40xx leo lexmark ma1509 magicolor matsushita microtek microtek2 mustek mustek_usb
+	mustek_usb2 nec net niash pie pieusb pixma plustek plustek_pp qcam ricoh rts8891 s9036 sceptre sharp sm3600
+	sm3840 snapscan sp15c st400 stv680 tamarack teco1 teco2 teco3 test u12 umax umax_pp umax1220u xerox_mfp p5"
+_pkgdesc_dell1600n_net="SANE backend for Dell 1600n that supports colour and monochrome scans over ethernet, usb not supported"
+for _backend in $_backends; do
+	subpackages="$subpackages $pkgname-backend-$_backend:_backend"
+done
+subpackages="$pkgname-doc $pkgname-dev $subpackages $pkgname-utils $pkgname-saned"
+source="https://alioth.debian.org/frs/download.php/file/4146/$pkgname-backends-$pkgver.tar.gz
+	$pkgname-saned.initd
+	include.patch
+	network.patch
+	pidfile.patch
 	"
-
-_builddir="${srcdir}/${pkgname}-backends-${pkgver}"
-prepare() {
-	local i
-	cd "$_builddir"
-	for i in $source; do
-		case $i in
-		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
-		esac
-	done
-}
+builddir="$srcdir"/$pkgname-backends-$pkgver
 
 build() {
-	cd "$_builddir"
+	cd "$builddir"
 	./configure \
-		--prefix=/usr \
-		--sbindir=/usr/bin \
-		--sysconfdir=/etc \
-		--localstatedir=/var \
-		--with-docdir=/usr/share/doc/sane \
-		--enable-avahi \
-		--enable-pthread \
-		--disable-rpath \
-		--disable-latex \
-		--enable-libusb_1_0 \
-		--disable-locking \
-		|| return 1
-
-	make
+	--prefix=/usr \
+	--sysconfdir=/etc \
+	--with-docdir=/usr/share/doc/$pkgname \
+	--enable-avahi \
+	--enable-libusb_1_0 \
+	--disable-rpath \
+	--disable-locking \
+	|| return 1
+	make || return 1
 }
 
 package() {
-	cd "$_builddir"
-        make DESTDIR="${pkgdir}" install
-        # fix hp officejets
-        echo "#hpaio" >> "${pkgdir}/etc/sane.d/dll.conf"
-        # install udev files
-        install -D -m0644 tools/udev/libsane.rules \
-          "${pkgdir}/usr/lib/udev/rules.d/49-sane.rules"
-        # fix udev rules
-        sed -i 's|NAME="%k", ||g' "${pkgdir}/usr/lib/udev/rules.d/49-sane.rules"
-        # Install the pkg-config file
-        install -D -m644 tools/sane-backends.pc \
-            "${pkgdir}/usr/lib/pkgconfig/sane-backends.pc"
-        # Remove libtool files
+	cd "$builddir"
+	make DESTDIR="$pkgdir" install || return 1
+	echo -n "" > "$pkgdir"/etc/$pkgname.d/dll.conf
+	install -Dm644 backend/dll.aliases "$pkgdir"/etc/$pkgname.d/dll.aliases
+	install -Dm644 tools/udev/lib$pkgname.rules \
+		"$pkgdir"/usr/lib/udev/rules.d/49-$pkgname.rules
+	sed -i 's|NAME="%k", ||g' "$pkgdir"/usr/lib/udev/rules.d/49-$pkgname.rules
+}
+
+saned() {
+	local name=${subpkgname#$pkgname-}
+	pkgdesc="$pkgdesc (network scanner server)"
+	mkdir -p "$subpkgdir"/etc/$pkgname.d "$subpkgdir"/usr
+	mv "$pkgdir"/etc/$pkgname.d/$name.conf "$subpkgdir"/etc/$pkgname.d
+	mv "$pkgdir"/usr/sbin "$subpkgdir"/usr/
+	install -Dm755 "$srcdir"/$pkgname-$name.initd "$subpkgdir"/etc/init.d/$name
+}
+
+utils() {
+	pkgdesc="$pkgdesc (utilities)"
+	mkdir -p "$subpkgdir"/usr
+	mv "$pkgdir"/usr/bin "$subpkgdir"/usr
+	rm -fr "$pkgdir"/usr/share
+}
+
+_backend() {
+	local name=${subpkgname#$pkgname-backend-}
+	depends="$pkgname"
+	pkgdesc=$(eval echo \$_pkgdesc_$name)
+	if [ ! "$pkgdesc" ]; then
+		# cut description from man-page
+		pkgdesc=$(tr '\n' ' ' < "$builddir"/doc/$pkgname-$name.man)
+		pkgdesc=${pkgdesc#*\- }
+		pkgdesc=${pkgdesc%% .SH *};
+	fi
+	mkdir -p "$subpkgdir"/usr/lib/$pkgname \
+		"$subpkgdir"/etc/$pkgname.d/dll.d
+	mv "$pkgdir"/usr/lib/$pkgname/lib$pkgname-$name.* \
+		"$subpkgdir"/usr/lib/$pkgname || return 1
+	echo "$name" > "$subpkgdir"/etc/$pkgname.d/dll.d/$name
+	if [ -f "$pkgdir"/etc/$pkgname.d/$name.conf ]; then
+		mv "$pkgdir"/etc/$pkgname.d/$name.conf \
+			"$subpkgdir"/etc/$pkgname.d
+	fi
+	if [ -f "$pkgdir"/usr/bin/$name ]; then
+		mkdir -p "$subpkgdir"/usr/bin
+		mv "$pkgdir"/usr/bin/$name "$subpkgdir"/usr/bin
+	fi
 }
 
-md5sums="1ca68e536cd7c1852322822f5f6ac3a4  sane-backends-1.0.24.tar.gz
-9084841146b6d10b957c60594f707937  10-network.patch
-039524a38af8721f2e97d45e889295ca  20-segfault-avahi-fix-kodakio.patch
-dd5c05ee306a1ca2cd4cbb0149997007  30-musl-header-fixes.patch"
-sha256sums="27c7085a54f1505d8b551e6f1e69d30e1ee57328b18429bb2225dabf4c45462d  sane-backends-1.0.24.tar.gz
-8400ed2fb2109447eb9d4e343e2964ece964ba5999b2eb6553762e9c984092c3  10-network.patch
-91e01450f87d52fa82e5e0e112a3ac7f5355f5a133467b8a38d0e1f52e94d25a  20-segfault-avahi-fix-kodakio.patch
-3147e7011d64297f6fa0229a51f5451fee151ccfe09dd2cc05d9feaf2f45fcf2  30-musl-header-fixes.patch"
-sha512sums="1e9f962bb9d27f17067eb662dabfc0a1aa0d06e16bec4bd28868124b468578d82f14f6d2c1f5de63d2cec57ca4584ec12d3b2c2b1de20f1199aece581453ebc5  sane-backends-1.0.24.tar.gz
-9cb595841f59b5105ecc85e4c0ad8781c52caa2354fb823c920ec467e88afbe47f2b3f4a7a3980bef5dbf22983c5786f051a9d10aea97b4bf7c4a05378592029  10-network.patch
-43e91fe2452eca4fbfbd256aae3f44a28674af7210f59b60b34c1149f0cd208318678a810313aabff84f18bb712982e10ae320ef3179b6437e413adda6298fbe  20-segfault-avahi-fix-kodakio.patch
-f7a2ce1826a967fdd1ee8e2bfa2080e79547564dec28012cc8fcc3955730eac8a352d55e1b2478e6092bd968f17745feb81ce8462ccd582a2282ff572c46e351  30-musl-header-fixes.patch"
+md5sums="f9ed5405b3c12f07c6ca51ee60225fe7  sane-backends-1.0.25.tar.gz
+042bb035974918365e83568fd3a285df  sane-saned.initd
+bc249a3ab2f9cdd12443831b5a999469  include.patch
+9084841146b6d10b957c60594f707937  network.patch
+f266a1ec6db5461e39531acf509738a4  pidfile.patch"
+sha256sums="a4d7ba8d62b2dea702ce76be85699940992daf3f44823ddc128812da33dc6e2c  sane-backends-1.0.25.tar.gz
+a3885af89b86b827d491ac67a78321e8bb9d9a05cb652c1a046986217b1e28b0  sane-saned.initd
+4112c9d6a9d7b9a3ac836e02c4617a71c0519451faf1138ee1038db8cc3422df  include.patch
+8400ed2fb2109447eb9d4e343e2964ece964ba5999b2eb6553762e9c984092c3  network.patch
+8d81005e5b350b109e186c8fa267f9938a8c35b8bbf353534e99aadd4261da8f  pidfile.patch"
+sha512sums="b9548646fff13558a4da4a4e9e8bad730f05121bcc65b72d24ded3bfddc6fe574e08c39c8651544b8fbfeab036fffd76cc14d76ef5d5d47e7513a2ce3afcc9df  sane-backends-1.0.25.tar.gz
+0a06eaa28b345202f2bdf8361e06f843bb7a010b7d8f80132f742672c94249c43f64031cefa161e415e2e2ab3a53b23070fb63854283f9e040f5ff79394ac7d1  sane-saned.initd
+1779ff8beb1ba5f9238c25d819a7f0045f7e257c19b511315feb85650e445ca86450a9e1d7ff8650499d3dae808589a6c2e358d5f3f39a3f40ce4999179b86d6  include.patch
+9cb595841f59b5105ecc85e4c0ad8781c52caa2354fb823c920ec467e88afbe47f2b3f4a7a3980bef5dbf22983c5786f051a9d10aea97b4bf7c4a05378592029  network.patch
+09505943f9441854a6c333f19e2535b4a646a8cc060fe82c6261e7d29c72773ebe98d43a91acc951f4336a3c8b4c84ab7c7b0763426136b4b59d9546bc2fa8c0  pidfile.patch"
diff --git a/unmaintained/sane/include.patch b/unmaintained/sane/include.patch
new file mode 100644
index 0000000000000000000000000000000000000000..518d3b4d5cbc8e876d92858c6d597305ceccde29
--- /dev/null
+++ b/unmaintained/sane/include.patch
@@ -0,0 +1,11 @@
+--- a/include/sane/sane.h
++++ b/include/sane/sane.h
+@@ -16,6 +16,8 @@
+ #ifndef sane_h
+ #define sane_h
+ 
++#include <sys/types.h>
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
diff --git a/unmaintained/sane/10-network.patch b/unmaintained/sane/network.patch
similarity index 100%
rename from unmaintained/sane/10-network.patch
rename to unmaintained/sane/network.patch
diff --git a/unmaintained/sane/pidfile.patch b/unmaintained/sane/pidfile.patch
new file mode 100644
index 0000000000000000000000000000000000000000..457755bdb85f22931bf50bcd4bfd504fc14dd616
--- /dev/null
+++ b/unmaintained/sane/pidfile.patch
@@ -0,0 +1,11 @@
+--- a/frontend/saned.c
++++ b/frontend/saned.c
+@@ -224,7 +224,7 @@
+ int numchildren;
+ 
+ #define SANED_CONFIG_FILE "saned.conf"
+-#define SANED_PID_FILE    "/var/run/saned.pid"
++#define SANED_PID_FILE    "/run/saned/saned.pid"
+ 
+ #define SANED_SERVICE_NAME   "sane-port"
+ #define SANED_SERVICE_PORT   6566
diff --git a/unmaintained/sane/sane-saned.initd b/unmaintained/sane/sane-saned.initd
new file mode 100644
index 0000000000000000000000000000000000000000..6482073ef48282d37750a81620a2d62d8a7a0926
--- /dev/null
+++ b/unmaintained/sane/sane-saned.initd
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+
+description="SANE network scanner server"
+
+owner=saned
+pidfile=/run/saned/saned.pid
+cfgfile=/etc/sane.d/saned.conf
+command=/usr/sbin/saned
+command_args="-a $owner"
+required_files="$cfgfile"
+
+start_pre() {
+	checkpath -dm755 -o $owner ${pidfile%/*}
+}
diff --git a/unmaintained/sane/sane-saned.pre-install b/unmaintained/sane/sane-saned.pre-install
new file mode 100644
index 0000000000000000000000000000000000000000..caad990d96aa998050fd8b40d31f017f44bab980
--- /dev/null
+++ b/unmaintained/sane/sane-saned.pre-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+adduser -SDH -h /run/saned -s /sbin/nologin -G scanner -g saned saned 2>/dev/null
+
+exit 0
diff --git a/unmaintained/sane/sane.pre-install b/unmaintained/sane/sane.pre-install
new file mode 100644
index 0000000000000000000000000000000000000000..b75c867de93d55686a370a10410bc66d2c92a385
--- /dev/null
+++ b/unmaintained/sane/sane.pre-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+addgroup -S scanner 2>/dev/null
+
+exit 0