Index: /src/router/rc/Makefile
===================================================================
--- /src/router/rc/Makefile	(revision 14606)
+++ /src/router/rc/Makefile	(revision 14607)
@@ -355,4 +355,7 @@
 ifeq ($(CONFIG_WR1043),y)
 CFLAGS += -DHAVE_WR1043
+endif
+ifeq ($(CONFIG_P910ND),y)
+CFLAGS += -DHAVE_P910ND
 endif
 ifeq ($(CONFIG_DIR615E),y)
Index: /src/router/rc/services.c
===================================================================
--- /src/router/rc/services.c	(revision 14606)
+++ /src/router/rc/services.c	(revision 14607)
@@ -480,5 +480,7 @@
 {
 	void *handle = NULL;
-
+#ifdef HAVE_P910ND
+	handle = startstop_nofree_f("printer", handle);
+#endif
 #ifdef HAVE_AP_SERV
 	handle = startstop_nofree_f("apserv", handle);
Index: /src/router/services/Makefile
===================================================================
--- /src/router/services/Makefile	(revision 14606)
+++ /src/router/services/Makefile	(revision 14607)
@@ -237,4 +237,5 @@
 ifeq ($(CONFIG_P910ND),y)
 CFLAGS_EXTRA += -DHAVE_P910ND
+OBJS += printer.o
 endif
 
Index: /src/router/services/sysinit/sysinit.c
===================================================================
--- /src/router/services/sysinit/sysinit.c	(revision 14606)
+++ /src/router/services/sysinit/sysinit.c	(revision 14607)
@@ -1943,17 +1943,4 @@
 			insmod("printer");
 			insmod("usblp");
-#ifdef HAVE_P910ND
-			sleep(2);	// wait for printers to show up
-			FILE *test = fopen("/dev/usb/lp0", "rb");
-			if (!test) {
-				eval("mknod", "/dev/lp0", "c", "180", "0");
-				eval("mknod", "/dev/lp1", "c", "180", "1");
-				eval("mknod", "/dev/lp2", "c", "180", "2");
-				eval("p910nd", "-f", "/dev/lp0", "0");
-			} else {
-				fclose(test);
-				eval("p910nd", "-f", "/dev/usb/lp0", "0");
-			}
-#endif
 		}
 		mount("devpts", "/proc/bus/usb", "usbfs", MS_MGC_VAL, NULL);
