Scanning Online

Even with my previous Linux installation, after I set up my scanner, I had to perform a manual step to re-enable my modem – I never got around to figuring out how to automate it. I recently re-solved this problem with the new installation (which has a new complication), and did figure out how to automate it.

The issue (which I understand better for the effort) is that both the modem and the SCSI card for the scanner are Plug-n-Pray ISA devices. The isapnp programs under Linux can detect both, but something is always a little off. I suspect that some of the problems stem from using a PNP process on a bios set for ‘PNP OS not installed’ It’s possible that flipping that option would have made the solution easier, but I didn’t want to pull the rug out from under my Windows98 installation.

Here is what was happening (note: kernel 2.4.27 on Debian):
-The BIOS, set for non PNP, was configuring as much as it could at boot time, and making it look like built in hardware. It could not, however, configure the third-party add-in SCSI card, so that was unavailable.

-The modem card is configured to look like COM1/serial port 2. Initially this works fine because the BIOS configured it just like the second serial port

-Now I want to use the scanner. In order to use the card, I have run one of several ISA-PNP processes to automatically or manually configure it. This automatically configures the SCSI card okay, but moves the modem – the address it was using appear to be assigned to a built in serial port, so the PNP process thinks they are unavailable. I can’t get online. Now that I understand this better, a possible solution would be reconfigure either the dialup software or the ttyS, but moving hardware bothers me a bit.

A message like “LSR Safty Check Engaged!” shows up on text terminals when you try to access the modem.

Info gathering:
cat /proc/ioports
cat /proc/interrupts
(neither of these necessarily show everything)
cat /proc/isapnp (may not exist until kernel ISA PNP is run)
setserial /dev/ttyS1 (or your device; this where the system will try to access the serial ports)
stty -F /dev/ttyS1 (actually attempts to talk to the UARTS; tells you if the setserial information is pointing at a valid device; you will probably get the ‘safety check’ message if not.)

-The kernel I’m using now has built in ISA-PNP support, but it doesn’t have a configuration file, whereas the manual one does. I figure out the configuration file and then edit the startup script to run even though the kernel has ISA-PNP support. The modem works on startup.

I’m using the isapnptools package. ‘pnpdump’ produces a template configuration file, and by commenting/uncommenting/editing various sets of options, you can set up how things should be configured. I put the modem back on it’s right settings, and moved the SCSI card interrupt (which was overlapping with my real serial port and disabling my trackball.)

ISAPNP cards can’t be configured while they are active. So it is necessary for the configuration file to do each card once without the settings and with (ACT N) to deactivate them, and again with the proper settings and (ACT Y). The modem address still apper to be in use, so it necessary to change the conflict responses from FATAL to WARNING. Once you have the settings working, they go in /etc/isapnp.conf

There is already a script to run ‘isapnp /etc/isapnp.conf’ during startup in /etc/init.d/isapnp, but the first thing it does is check for kernel isapnp support. I commented out those lines so it would run.

-Now I try to install the module for the SCSI. It knows that it is an ISA-PNP card, so it has a dependency on the kernel’s ISA-PNP module. Which gleefully comes along and reassigns the modem to different address, because the correct address still appears reserved.

modprobe -n -v sym53c416
Shows what the SCSI card module depends on.

-A little editing of the module configuration disabled the kernel’s ISA-PNP support, so it appears to be working.

Add a file called /etc/modutils/options with one line:
options isa-pnp isapnp_disable=1

And then run update-modules.

My system seems to have alternate unused module system, possibly for a 2.6 kernel I was expirimenting with, in which case it looks like the file needs to be /etc/modprobe.d/options

The name of the SCSI card module goes into /etc/modules so it loads on startup.

Posted Sunday, September 11th, 2005 under Uncategorized, War Story.


Comments are closed.