| 
									
										
										
										
											2004-10-10 13:14:10 +00:00
										 |  |  | This is a report on how to build SANE on Solaris/x86 using a USB scanner. See | 
					
						
							|  |  |  | below for SCSI. | 
					
						
							| 
									
										
										
										
											2002-06-11 19:51:12 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-02-12 12:05:50 +00:00
										 |  |  | Another report for SANE on OpenSolaris can be found here: | 
					
						
							|  |  |  | http://ginfo.egim-mrs.fr/article.php3?id_article=44 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-10-10 13:14:10 +00:00
										 |  |  | From: Tomasz Orlinski <tomasz.orlinski@wp.pl> | 
					
						
							|  |  |  | To: sane-devel@lists.alioth.debian.org | 
					
						
							|  |  |  | Subject: [sane-devel] USB scanners DO work on Solaris 10 x86 | 
					
						
							|  |  |  | Date: Thu, 7 Oct 2004 20:26:50 +0200 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | I would like to inform you, that I have compiled SANE on Sun Solaris 10 x86 | 
					
						
							|  |  |  | with built-in USB scanner support. It was possible, because Sun had prepared | 
					
						
							|  |  |  | libusb library wrapper for Solaris 10. I know, that Solaris 10 Software | 
					
						
							|  |  |  | Express Release 08/04 is required. I have done it in that way: | 
					
						
							|  |  |  | LD_LIBRARY_PATH=/usr/sfw/lib:$LD_LIBRARY_PATH | 
					
						
							|  |  |  | CFLAGS="-I/usr/sfw/include" | 
					
						
							|  |  |  | CPPFLAGS="-I/usr/sfw/include" | 
					
						
							|  |  |  | LDFLAGS="-L/usr/sfw/lib -R/usr/sfw/lib -lusb" | 
					
						
							|  |  |  | export LD_LIBRARY_PATH CFLAGS CPPFLAGS LDFLAGS | 
					
						
							|  |  |  | ./configure --prefix=/opt/sane --disable-fork-process | 
					
						
							|  |  |  | make | 
					
						
							|  |  |  | make install | 
					
						
							|  |  |  | It was also required to add a generic USB kernel driver. I had to look for | 
					
						
							|  |  |  | my scanner device name in output of | 
					
						
							|  |  |  | prtconf -D -v | 
					
						
							| 
									
										
										
										
											2020-08-29 06:46:45 +00:00
										 |  |  | command. My scanner is Plustek UT24 and the appropriate part of output looked | 
					
						
							| 
									
										
										
										
											2004-10-10 13:14:10 +00:00
										 |  |  | like this: | 
					
						
							|  |  |  | name='compatible' type=string items=8 value='usb7b3,17.100' + ... | 
					
						
							|  |  |  | I had to remove the not used kernel driver | 
					
						
							|  |  |  | rem_drv ugen | 
					
						
							|  |  |  | And add it again: | 
					
						
							|  |  |  | add_drv -i 'usb7b3,17.100' ugen | 
					
						
							|  |  |  | Then, /opt/sane/bin/sane-find-scanner detected my scanner and everything | 
					
						
							|  |  |  | worked fine. I to add " " signs around usb7b3,17.100 name in | 
					
						
							|  |  |  | /etc/driver_aliases to have the scanner working after reboot. | 
					
						
							|  |  |  | To compile this packages SUNWlibusb and SUNWlibusbugen were needed. I used | 
					
						
							|  |  |  | Solaris Software Companion CD gcc 2.95.3 compiler and Sun's /usr/ccs/bin/ld | 
					
						
							|  |  |  | linker. USB support DOES NOT work in Solaris 9 and earlier versions. | 
					
						
							|  |  |  | I hope, that this information would be useful for other USB scanner users. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | From: Tomasz Orlinski <tomasz.orlinski@wp.pl> | 
					
						
							|  |  |  | To: sane-devel@lists.alioth.debian.org | 
					
						
							|  |  |  | Subject: Re: [sane-devel] USB scanners DO work on Solaris 10 x86 | 
					
						
							|  |  |  | Date: Fri, 8 Oct 2004 16:06:14 +0200 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [...] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Sun in Driver Development Kit v. 0.9 writes how to compile SANE, but it does not | 
					
						
							|  |  |  | really work :) They write about compiling with gcc and give options for Sun | 
					
						
							|  |  |  | Forte compiler (cc) and forget about attaching a kernel driver. But they write, | 
					
						
							|  |  |  | that versions earlier than 1.0.14 cannot be used. They want also to build SANE | 
					
						
							|  |  |  | with Posix threads enabled. So I think that can be true. Sun writes also, that | 
					
						
							|  |  |  | Solaris Software Express release at least S10_62 is needed to use | 
					
						
							|  |  |  | libusb. Release number can be checked in /etc/release. The newest version can be | 
					
						
							|  |  |  | downloaded from www.sun.com/solaris for free. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In my opinion it is important to be cautious when using scanner or just libusb | 
					
						
							|  |  |  | on important Solaris machines (especially multi-processor ones), because unlike | 
					
						
							|  |  |  | in other systems, Solaris kernel is fully preemtible, what means, that many | 
					
						
							| 
									
										
										
										
											2020-08-29 06:46:45 +00:00
										 |  |  | instances of the same driver can run simultaneously - it's dangerous, when | 
					
						
							| 
									
										
										
										
											2004-10-10 13:14:10 +00:00
										 |  |  | drivers are not perfect. And Solaris USB framework is absolutely new, so it can | 
					
						
							|  |  |  | contain bugs. I tried to crash my Solaris using USB subsystem and SANE, I didn't | 
					
						
							|  |  |  | manage to, but it doesn't mean, it's impossible. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SANE frontends work without any problems with Xsun and GIMP included in Solaris | 
					
						
							|  |  |  | Software Companion CD. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | --------------------------------------------------------------------------- | 
					
						
							|  |  |  | The following text describes, how to use a SCSI scanner (2002-06-11). | 
					
						
							| 
									
										
										
										
											1999-08-09 18:06:01 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | You need a generic SCSI driver to run SANE on Solaris.  There are at | 
					
						
							| 
									
										
										
										
											2001-05-01 21:08:45 +00:00
										 |  |  | least three such drivers: the scg driver by Joerg Schillig, the | 
					
						
							|  |  |  | sg driver by Kevin Sheehan, and starting with Solaris 8 Sun's own | 
					
						
							|  |  |  | sgen(7D) driver. | 
					
						
							| 
									
										
										
										
											1999-08-09 18:06:01 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | NOTE: You should install the SCSI generic driver BEFORE you run | 
					
						
							|  |  |  | `configure' in the sane directory---otherwise configure won't set up | 
					
						
							|  |  |  | SANE to work with the generic scsi driver. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | *** scg driver | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The SCSI general driver scg is | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	Copyright 1986-1995 Joerg Schilling, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It is supplied binary in pkgadd(1m) format and is tested from Solaris | 
					
						
							|  |  |  | 2.3 to Solaris 2.6 (sparc) and Solaris 2.3 to Solaris 2.5.1 (x86).  It | 
					
						
							|  |  |  | can be found in | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	ftp://ftp.fokus.gmd.de/pub/unix/kernel/scg/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | To install it on a SPARC do: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 05:27:22 +00:00
										 |  |  | 	cd /tmp | 
					
						
							| 
									
										
										
										
											1999-08-09 18:06:01 +00:00
										 |  |  | 	get SCHILYscg.sparc.tar.Z | 
					
						
							|  |  |  | 	uncompress SCHILYscg.sparc.tar.Z | 
					
						
							|  |  |  | 	tar -xvf SCHILYscg.sparc.tar | 
					
						
							|  |  |  | as root: | 
					
						
							|  |  |  | 	pkgadd -d . | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | NOTE: Be very careful with pkgadd as it does not check for the correct | 
					
						
							|  |  |  |       target architecture. Do not install drivers for x86 on sparc | 
					
						
							|  |  |  |       and vice versa.  You will get a corrupt system otherwise. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For Solaris on an x86 do: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-27 05:27:22 +00:00
										 |  |  | 	cd /tmp | 
					
						
							| 
									
										
										
										
											1999-08-09 18:06:01 +00:00
										 |  |  | 	get SCHILYscg.i386.tar.Z | 
					
						
							|  |  |  | 	uncompress SCHILYscg.i386.tar.Z | 
					
						
							|  |  |  | 	tar -xvf SCHILYscg.i386.tar | 
					
						
							|  |  |  | as root: | 
					
						
							|  |  |  | 	pkgadd -d . | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Then do a reboot --r | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Once the system has rebooted, there should be a device node /dev/scgXX | 
					
						
							|  |  |  | for each of your SCSI adapters (/dev/scg0 for the first adapter, | 
					
						
							|  |  |  | /dev/scg1 for the second, and so on...) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Because the device name specifies a SCSI adapter, you need to use a | 
					
						
							|  |  |  | special device naming syntax so SANE can tell which device you want to | 
					
						
							|  |  |  | talk to.  If the device is at SCSI id 0, the character 'a' should be | 
					
						
							|  |  |  | appended, character 'b' should be used for SCSI id 1, and so on | 
					
						
							|  |  |  | (see also the Solaris section in sane-scsi(5)). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | E.g., to configure an HP scanner, configuration file | 
					
						
							|  |  |  | /opt/local/etc/sane.d/hp.conf might contain: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/dev/scg0c	if the scanner has the SCSI target id 2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | WARNING! Everybody who can read/write a generic SCSI device can do | 
					
						
							|  |  |  | with all your disks whatever he/she wants. It takes only a few lines | 
					
						
							|  |  |  | of code to send a FORMAT control block...  Rather than giving users | 
					
						
							|  |  |  | access to the SCSI adapter special device, it may be a better idea to | 
					
						
							|  |  |  | install scanimage/xscanimage setgid to a special "scanner" group and | 
					
						
							|  |  |  | then turn on write permission for the scanner group. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | *** sg driver | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Another solution to the permission problem is to use the generic SCSI | 
					
						
							|  |  |  | driver sg by Kevin Sheehan.  This driver is not free but uses separate | 
					
						
							|  |  |  | device node for each SCSI target: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/dev/sg/0, /dev/sg/1, ... | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This allows to control device access on a per-device basis. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-05-01 21:08:45 +00:00
										 |  |  | *** sgen driver | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The solaris 8 sgen driver must be configured before it can be used. | 
					
						
							|  |  |  | See /kernel/drv/sgen.conf and the manual page sgen(7D). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The minimal config includes defining the correct | 
					
						
							|  |  |  | "device-type-config-list" property in /kernel/drv/sgen.conf.  The | 
					
						
							|  |  |  | typical SCSI device type for a scanner is either "scanner" or | 
					
						
							|  |  |  | "processor". You can optionally restrict the devices sgen attaches to, | 
					
						
							|  |  |  | by defining the "inquiry-config-list" property.  You also have to | 
					
						
							|  |  |  | uncomment the scanner's "target/lun" entry, so that the sgen driver is | 
					
						
							|  |  |  | allowed to attach to the SCSI scanner hardware. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | After the configuration file /kernel/drv/sgen.conf is set up for the | 
					
						
							|  |  |  | scanner, run the command "devfsadm -v -i sgen" to create sgen device | 
					
						
							|  |  |  | nodes for the scanner.  In case you need to rerun devfsadm to | 
					
						
							|  |  |  | incorporate changes to the sgen.conf file, make sure the sgen driver | 
					
						
							|  |  |  | is unloaded from the kernel before you re-run devfsadm.  The driver is | 
					
						
							|  |  |  | unloaded using the "modunload -i {id}" command; the {id} of the sgen | 
					
						
							|  |  |  | driver can be determined with the modinfo command. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The device nodes use names of the following form: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/dev/scsi/device-type/cXtXdX | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Example:  A HP Scanjet 4c (SCSI device type: "processor") on controller | 
					
						
							|  |  |  | #1, target #6, lun #0 uses the device name | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/dev/scsi/processor/c1t6d0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /kernel/drv/sgen.conf contains: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	device-type-config-list="processor"; | 
					
						
							|  |  |  | 	name="sgen" class="scsi" target=6 lun=0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-08-09 18:06:01 +00:00
										 |  |  | If you have questions or problems with the Solaris support in SANE, | 
					
						
							|  |  |  | send mail to: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |      hu@garfield.m.isar.de |