Changing serial port options in the enum configuration file

I’ve got a server with 2 onboard serial ports. The first one works fine on boot up, the second one does not. If I restart the driver without the io port and IRQ, both ports work just fine. Below is the entry from /etc/system/enum/devices/char.

device(pnpbios, .type=$(PNPBIOS_TYPE_COMM), .subtype=$(PNPBIOS_COMM_SERIAL))
device(isa, .type=$(ISA_TYPE_COMM), .subtype=$(ISA_COMM_SERIAL), .progif=00)
device(pcmcia, .type=$(PCCARD_TYPE_COMM), .subtype=$(PCCARD_COMM_SERIAL), .progif=$(PCCARD_COMM_SERIAL_IF))
append(legacy, “,chkser,$+ioport=$(ioport)+7,irq=$(irq)$-”)
uniq(sernum, devc-ser, 1)
driver(devc-ser8250 $(SER_OPTIONS), “-u$(sernum) $(ioport),$(irq)”)
enumerator(ser /dev/ser$(sernum))

I thought, I would just remove the “$(ioport),$(irq)” from the driver clause, but that resulted in /dev/ser2 and /dev/ser3. So, I’m looking for information on some of the items like “legacy”, “chkser”, and “$+ … $-”. Can anyone can tell me what these mean or point me to some documentation on the syntax for configuration files other than what’s in the User Guide and Utility Reference.

What do you mean with “driver”? devc-ser*?. Why don’t you start the driver with the correct parameters from sysinit sequence?


Right now, I have the following entries in rc.local to handle this:

slay devc-ser8250
sleep 1
/sbin/devc-ser8250 &
waitfor /dev/ser1

This works, but I have to distribute this to hundreds of customers and I’m trying to avoid modifying these files since each customer has a unique rc.local file. My idea was to put in an /etc/system/enum/overrides file that starts the driver with no ioport or IRQ options so it would just be a matter of copying in my script. Sysinit would work too since there is no danger of losing custom in that script either. Also, I wanted to find out what “chkser” does for future reference.

I don’t think that changing sysinit file would be a good idea. sysinit file could be upgraded in future releases and this will overwrite. Even this way is not the recommended by documentation.

If you don’t want to modify rc.local (this would be the right way) maybe you can add a script file in /etc/profile.d/ directory and run your own processes from there. “All” the scripts in this directory will be executed (as dot file) from /etc/profile.