HSF

Conexant/Rockwell modem HOWTO
Prev |  | Next

# 5. HSF

## 5.1. History

A HSF driver first appeared out of the blue in mid-2000 when Olitec released unto the world a binary only driver for their Olitec PCI modem for 2.2.14 kernel, it wasn't long before someone realized that the Olitec modem was based on the Rockwell/Conexant HSF Chipset. Inquiries to Olitec revealed that the driver should work with any HSF chipset as there was nothing in the driver that was specific to the Olitec modems. Many people tried to get the driver to work with non-Olitec modem unfortunately without success, however a few months later and after many hours of work by many people trying a variety of tricks to get the driver to work, several people managed to stumble across the solution. It was a simple one line change to file which solved the problem and the world was left with a working HSF driver, at the time it only worked on 2.2.14 Kernels and Olitec had refused to release the source code to let others try to get it to work with other kernels.

A few months later Olitec released the driver for 2.2.16 and 2.2.17 kernels, this kept the HSF winmodem community satisfied until we came to the day when the 2.4 kernel was released. None of the previous drivers appeared to work with the 2.4 kernel and this caused problems for all those who wanted to upgrade and also for the large number of new users who were using 2.4.* kernel based distributions such as Mandrake 8 and RedHat 7.1. Not a word had been heard out of Olitec since the 2.4 kernel was released, but Conexant had announced that they intended to develop a Linux driver. After many months of waiting for a 2.4.* driver Marc Boucher decided to something about it and wrote a wrapper which allowed an old version of the driver to be used with 2.4.* kernels.

That's where we are now, Marc's wrapper is still in experimental development stage but it works and many people are using it to connect to the internet under Linux.

From the history you'll understand why the next section has to be split into two sections one for 2.2.14 - 2.2.18 kernels and one for 2.4.* kernels. If you don't know what kernel version you have you can find out by using the 'uname -r' command at the console window before proceeding to the appropriate section of this HOWTO.

## 5.2. Kernel 2.2.14 - 18

### 5.2.1. Requirements

Having either a 2.2.14, 2.2.16 or 2.2.17 kernel. It has been reported that the driver for 2.2.17 kernels also works with 2.2.18 kernels.

### 5.2.2. Getting IDs

To get the modem to work you'll need to get the Vendor ID and Device ID. The easiest way to do this is to use the command "less /proc/pci" and scroll until you find the PCI card which has a vendor ID of either 14F1 (Conexant) or 127A (Rockwell) and note the Device ID.

You'll need to make an %HSFModem% line.

Copy down the following line somewhere,

%HSFModem% = ModemX, PCI\VEN_XXXX&DEV_YYYY&SUBSYS_YYYYXXXX

Replacing the XXXX's with your Vendor ID and the YYYY's with your Device ID, so if your Vendor ID is 127A and Device ID is 2015 your line would be,

%HSFModem% = ModemX, PCI\VEN_127A&DEV_2015&SUBSYS_2015127A

You'll need to use this line later on to allow the driver to detect your modem, the next steps you need to take vary slightly depending on what kernel you have so you'll need to refer to the appropriate section depending on whether your kernel version is 2.2.14, 2.2.16 or 2.2.17

### 5.2.3. If you have a 2.2.14 kernel

Installing a HSF driver on a 2.2.14 kernel

1. Download the file HSF_V1.01.02_K2.2.14-5.0.tar, it can be obtained from Olitec's site or the mirror.

2. Copy it to your home directory

3. In a console window change to your home directory

   `[user@localhost]$` cd ~

4. Decompress the file

   `[user@localhost]$` tar xzvf HSF_V1.01.02_K2.2.14-5.0.tar

5. Enter into the drivers directory

   `[user@localhost]$` cd pci_56k_v2

6. Load up the lin_hsf.inf file in your favorite text editor, under the section [generic] you'll see a few of lines like "%HSFModem% = ModemX, PCI\VEN_127A&DEV_1025&SUBSYS_1025127A" under theses lines add your own %HSFModem% line which you made earlier.

7. Switch to root

   `[user@localhost]$` su

8. Run the ins_all script to install the driver

   `[user@localhost]$` ./ins_all

You will now be able to access the internet by telling your dial-up software that your modem is located at /dev/modem.

The ins_all will only temporarily load the modem driver and the modem driver will be removed when you reboot. So if you re boot you will need to run the ./ins_all program to reload the driver, if you reboot on a regular basis you may want to set the . /ins_all command to automatically run every time your computer loads up.

### 5.2.4. If you have a 2.2.16 kernel

Installing a HSF driver on a 2.2.16 kernel

1. Download the file PCI_56K_V2_K2.2.16.tar.gz, it can be obtained from Olitec's site or the Mirror.

2. Copy it to your home directory

3. In a console window change to your home directory

   `[user@localhost]$` cd ~

4. Decompress the file

   `[user@localhost]$` tar xzvf PCI_56K_V2_K2.2.16.tar.gz

5. Enter into the drivers directory

   `[user@localhost]$` cd pci_56k_v2_k2.2.16

6. Load up the lin_hsf.inf file in your favorite text editor, under the section [generic] you'll see a few of lines like "%HSFModem% = ModemX, PCI\VEN_127A&DEV_1025&SUBSYS_1025127A" under theses lines add your own %HSFModem% line which you made earlier.

7. Switch to root

   `[user@localhost]$` su

8. Run the ins_all script to install the driver

   `[user@localhost]$` ./ins_all

You will now be able to access the internet by telling your dial-up software that your modem is located at /dev/modem.

The ins_all will only temporarily load the modem driver and the modem driver will be removed when you reboot. So if you reboot you will need to run the ./ins_all program to reload the driver, if you reboot on a regular basis you may want to set the ./ins_all command to automatically run every time your computer loads up.

### 5.2.5. If you have a 2.2.17 or 2.2.18 kernel

Installing a HSF driver on a 2.2.17 or 2.2.18 kernel

1. Download the file PCI_56K_V2_K2.2.17.tar.gz , it can be obtained from Olitec's site or the Mirror.

2. Copy it to your home directory

3. In a console window change to your home directory

   `[user@localhost]$` cd ~

4. Decompress the file

   `[user@localhost]$` tar xzvf PCI_56K_V2_K2.2.17.tar.gz

5. Enter into the drivers directory

   `[user@localhost]$` cd pci_56k_v2_k2.2.17

6. Load up the lin_hsf.inf file in your favorite text editor, under the section [generic] you'll see a few of lines like "%HSFModem% = ModemX, PCI\VEN_127A&DEV_1025&SUBSYS_1025127A" under theses lines add your own %HSFModem% line which you made earlier.

7. Switch to root

   `[user@localhost]$` su

8. Run the ins_all script to install the driver

   `[user@localhost]$` ./ins_all

You will now be able to access the internet by telling your dial-up software that your modem is located at /dev/modem.

The ins_all will only temporarily load the modem driver and the modem driver will be removed when you reboot. So if you reboot you will need to run the ./ins_all program to reload the driver, if you reboot on a regular basis you may want to set the ./ins_all command to automatically run every time your computer loads up.

## 5.3. Kernel 2.4.*

### 5.3.1. Requirements

- You need a 2.4.* kernel which does not have SMP support.

- You will also need to have your kernel source available, if you don't have them installed already you can probably find them on your distributions CD.

- At least version 2.4.0 of ppp (you can find what version of ppp you have installed by using the command pppd --version)

To get the modem working under a 2.4.* kernel you'll need to use the driver intended for 2.2.17 kernels alongside Marc Boucher's hsfcompat wrapper program which lets the driver work with 2.4.* kernels. At the time of writing the hsfcompat driver is on version 1.0d and is still experimental and may cause problem with your system. However I haven't seen anyone have any problem from using the wrapper. For the latest details see hsfcompat's homepage.

Files you'll need to download:

`hsfcompat_24-1.0d.tar.gz`

  Main download site:

  http://www.mbsi.ca/hsfcompat/hsfcompat_24-1.0d.tar.gz

`PCI_56K_V2_K2.2.17.tar.gz`

  Main download site:

  http://www.olitec.com/pub/PCI_56K_V2_K2.2.17.tar.gz

  Mirrored at:

  ftp://ftp.dina.kvl.dk/pub/Staff/Thomas.S.Iversen/linmodems_drivers/olitec/PCI_56K_V2_K2.2.17.tar.gz

### 5.3.2. Installing

1. Copy the `hsfcompat_24-1.0d.tar.gz` file to your home directory

2. In a console window change to your home directory

   `[user@localhost]$` cd ~

3. Extract the hcfcompat program by using:

   `[user@localhost]$` tar xzvf `hsfcompat_24-1.0d.tar.gz`

4. Copy the `PCI_56K_V2_K2.2.17.tar.gz` file into the `hsfcompat_24-1.0d` directory.

5. Extract the driver by using:

   `[user@localhost]$` tar xzvf `PCI_56K_V2_K2.2.17.tar.gz`

6. Load up the file `Makefile` (Found in the `hsfcompat_24-1.0d` directory) in a text editor and scroll down to the line which reads SBINDIR=/usr/sbin and replace `/usr/sbin` with the location of your system bin directory, then scroll down to the line which reads KERNELSRC=/usr/src/linux and replace `/usr/src/linux` with the location of your kernel source files.

7. Switch to superuser (root) by using:

   `[user@localhost]$` su

8. In the `hsfcompat_24-1.0d` directory compile hsfcompat by using:

   `[user@localhost]$` make

9. Install the driver by running: `[user@localhost]$` make `install`

10. Follow the on-screen instruction which explain how to load the driver into memory and how to have this done automatically.

## 5.4. Troubleshooting FAQ

5.4.1. When running ./ins_all I get a kernel mismatch error ?
5.4.2. When I try to run ./ins_all I get the error "bash: ./ins_all No such file or directory."
5.4.3. When installing the driver when it tries to load `myserial.o` I get a segmentation fault ?
5.4.4. When trying to dial my ISP I get "No Carrier" error ?
5.4.5. When running ./ins_alI get the error "No matching INF file is found for SoftK56 PCI device" ?
5.4.6. On my Laptop the driver seemed to install fine but I can't access my modem on /dev/modem ?

5.4.1. When running ./ins_all I get a kernel mismatch error ?

This means that the driver thinks that you don't have the appropriate kernel version, if you have a variant of the kernel (such as the one that has non-standard name) then you can still get the driver to work by loading up the file `ins_all` in a text editor and replacing all of the 'insmod -m' commands with 'insmod -f -m'.

5.4.2. When I try to run ./ins_all I get the error "bash: ./ins_all No such file or directory."

This error tends to be caused by the script being unable to find C Shell at the location `/bin/csh`. If you have C Shell installed in a different location then you should create a symbolic link which points to the correct location. If you don't have you'll need to install it.

5.4.3. When installing the driver when it tries to load `myserial.o` I get a segmentation fault ?

This is caused by your computer trying to get Plug-and-Play to work with your modem. You can stop it doing this by going to your BIOS and setting an option which tells it not to do that. The settings name varies from BIOS to BIOS but is normally something like PnP OS.

5.4.4. When trying to dial my ISP I get "No Carrier" error ?

It has been reported that making the following changes to your configuration will work:

1. Replace the command ATZ with ATZX3

2. Replace the command ATDT with ATX3DT

5.4.5. When running ./ins_alI get the error "No matching INF file is found for SoftK56 PCI device" ?

his occurs when the driver can't find the correct %HSFModem% line in the lin_hsf.inf line, go back through the instructions and make sure that you didn't make a mistake when making or entering the the %HSFModem% line.

5.4.6. On my Laptop the driver seemed to install fine but I can't access my modem on /dev/modem ?

This is often caused by the modem's device number clashing with that of PCMCIA, you can check if this is the case by entering the command,

[user@localhost]$ ls -l /dev/ | grep 254

You'll see the hsf0 device listed with the major number of 254, if any other device also has the major number of 254 it means there is a clash. You can fix this problem by loading up the ins_all file and change the line which reads "mknod /dev/cnxt c 254 64" to "mknod /dev/cnxt c 253 64".

Prev | Home | Next
HCF chipset based modems |  | License