The 2.6.10 kernel (or 2.6.9 on Fedora) has a new feature . It no longer needs modem_run to load the firmware. This is a good thing because it speeds up the boot process.
Prepare the firmware by splitting it into two parts, speedtch-1.bin and speedtch-2.bin. These files contain programs that are run by the modem (not by your computer). The small file speedtch-1.bin loads the larger file speedtch-2.bin which is the modem's operating system, or something like that.
You will need to have gcc installed to compile this. Download a copy of the firmware-extractor and untar it.
If you have a copy of the firmware that you know works with your modem, stick with that.
Most people will want the firmware is in this zipfile. If you have an old green (revision 0) or a purple (revision 2) modem use the KQD6_3.012 file. If you have a silver (revision 4) modem use the ZZZL_3.012 file. The old green (revision 0) modems can be tempermental and may work better with the mgmt.o file in this tarball. Use the firmware that works for you.
Put a copy of your firmware in the firmware-extractor folder and rename it mgmt.o
Change directory into the firmware-extractor and run ./configure and make
That should split the firmware into the two parts you need, speedtch-1.bin and speedtch-2.bin. To copy them into udevs firmware folder become root then make install
Or you could copy and paste them there by hand. Udevs FIRMWARE_DIRS are defined in the script /lib/udev/firmware.sh.
These days udev handles firmware loading. If you compile udev yourself, install the firmware.sh script with the command
To get udev to load the fimrware you may need to (as root) edit udev's rules configuration file (it's usually called something like /etc/udev/rules.d/50-udev.rules). Open it with a text editor and add this line.
Before 093 udev installed a binary file called firmware_helper, so if you have an older version of udev change that line to run /lib/udev/firmware_helper instead.