As of Solaris 10 8/07, support for PCI-based modems is not included. With the latest patches, the asy driver will now attempt to probe for modems on the PCI bus, but the code does not work with all PCI modems. Specifically, a solution was needed for the the MultiTech Systems MT5634ZPX PCI modem. Solaris Express supports PCI modems, but enterprise users may not be able to move away from Solaris 10 yet.
However, it turns out that the asy driver can be built from the sources on the Open Solaris project. This driver will support PCI modems, including the MultiTech models. The driver has been tested with the MultiTech MT5634ZPX PCI modem, but may work for other models as well.
Warning! Altering drivers in the /kernel tree could potentially cause your system to be unable to boot. Always back up your system before making system changes, and have a bootable CD available to recover your system if necessary.
These instructions assume a 64-bit x86 system. The driver can also be built for a 32-bit system, with the appropriate changes to the Makefile and installation directory.
To build the asy driver as a standalone project, first download the two source files you will need:
(The hyperlinks are to the OpenSolaris CVS repository.)
Organize a directory tree that looks like:
asy/ asy.c sys/ asy.h
Create a makefile with the following contents
SRCS = asy.c
OBJS = asy.o
CPPFLAGS= -I. -D_KERNEL
CFLAGS = -m64 -xarch=sse2 -xmodel=kernel
all: $(OBJS)
/usr/ccs/bin/ld -r -o asy asy.o
.c.o:
$(CC) -c $(CPPFLAGS) $(CFLAGS) $<
The compiler flags shown above assume the use of Sun Studio 12.
After building the binary with make, save the original serial driver:
# cp /kernel/drv/amd64/asy /somewhere/asy_orig
Unload the asy driver if it is currently loaded:
# modinfo | grep asy 117 fffffffff3f80000 bae8 106 1 asy (ASY driver) # modunload -i 117
Copy the new driver into the kernel directory and load it:
# cp asy /kernel/drv/amd64/asy # modload -p drv/asy
If you are unsure of whether the driver built correctly, you can perform
a temporary installation in /tmp, with a symbolic link in the kernel tree.
In the event that the driver panics the system, the driver will not exist
after a reboot.
# cp asy /tmp/asy # ln -s /tmp/asy /kernel/drv/amd64/asy # modload -p drv/asy
Update /dev and /devices:
# devfsadm -i asy -v devfsadm[2755]: verbose: symlink /dev/term/0 -> ../../devices/pci@0,0/pci8086,244e@1e/pci11c1,5656@2:1 devfsadm[2755]: verbose: symlink /dev/cua/0 -> ../../devices/pci@0,0/pci8086,244e@1e/pci11c1,5656@2:1,cu devfsadm[2755]: verbose: SUNW_port_link: port monitor ttymon0 added devfsadm[2755]: verbose: SUNW_port_link: /dev/term/0 added to sacadm
If the asy driver fails to recognize your modem, you may need to add the following line to the end of /etc/driver_aliases, and run devfsadm again.
asy "pci11c1,5656"
Sun's patches may overwrite the asy driver at any point, so be sure to save the new asy driver so that you can reload it later.