08/17/2005 Conexant ADSL USB Driver for Linux ----------------------------------- Introduction ------------ This file describes the Linux LAN/WAN driver for the Conexant ADSL USB adapters. This driver supports Linux-2.6 kernels. The Linux kernel sources can be download from: http://www.kernel.org/pub/linux/kernel/v2.6/ The driver supports Linux-2.6 kernels. The installed system should already have the kernel sources installed in the /usr/src/linux or /lib/modules directory. If they are not there, try to get them off the installation disks for your distribution, or download the latest Linux-2.6 kernel, and configure and build that. One common problem while compiling modules on a new kernel is not to create link /usr/src/linux which should point to the relevent kernel source directory. On a freshly installed system this link might not be present and needs to be created before the kernel or any driver module can be compiled. There are lots of books and documents available describing how to extract, configure and build the kernel from it's sources... The driver is compiled and tested for: - Fedora Core 3 : kernel 2.6.9-1.667 using gcc 3.4.2 - SuseLinux 9.2 : kernel 2.6.8.8-24.10 using gcc 3.3.4 - Mandrake 10.1 : kernel 2.6.8.1-12mdk using gcc 3.4.1 Release Notes ============= Current ------- -> v1.02.0002E (08/17/2005) Firmware version: Y1.58.5 (Annex A) -Added the support the new Zeus DSP firmware -Added support for firmware deployment option at runtime -Added Mutex locks to synchronize access to firmware -Added support for enabling new firmware at run time via control panel History ------- -> v1.02.0001E-Beta (02/28/2005) Firmware version: Y1.8.1 (Annex A) -Support for Linux kernel 2.6 series (Fedora Core 3, Mandrake 10.1, SuseLinux 9.2) -> v1.01.0006E-Beta (01/04/2005) Firmware version: Y1.8.1 (Annex A) -Support for multiple PPPOA interfaces using different VPI/VCI -> v1.01.0005E (12/01/2004) Firmware version: Y1.8.1 (Annex A) -> v1.01.0005E (12/01/2004) Firmware version: Y1.8.1 (Annex A) -Support for multiple ethernet interfaces using different VPI/VCI (Rfc1483 mode only) -> v1.01.0004E (05/07/2004) Firmware version: Y1.8.1 (Annex A) -Endianness Related Fix in USB Interrupt Pipe processing (VTAen36951) -> v1.01.0003E (08/07/2003) Firmware version: Y1.8.1 (Annex A) -Firmware has been updated to Y1.8.1 -Merged changes from ATM library -> v1.01.0002E (06/18/2003) Firmware version: Y1.4.8 (Annex A) -Firmware has been updated to Y1.4.8 which contains following fixes: 1) Removed the forced re-handshake that was used for cafe biquad training. Known issues: 2) Watch out for cafe bridged-tap performance. -VTAen25931: Improper "training" state shown in Cetragate driver. Driver indicates "training" when the DSL cable is not plugged in. -> v1.01.0001E (04/28/2003) - Initial release of driver with support for Linux-2.4 kernels. Directory Structure ==================== The directory Structure is as follows. monaco_linux | |---ModemDrv | |---gpatm | |---Gti | |---cpl Compiling the Driver ==================== - Run make in the folder monaco_linux/ModemDrv/src to compile the driver. The Makefile contains following important options: DEBUG - Output driver debug messages [n] LAN - Create LAN interface [y] WAN - Create WAN interfaces [y] Compiling the Control Panel Application --------------------------------------- The Makefile understands following target(s). % make - This is to create the Control panel application. (Command to be executed from directory monaco_linux/cpl.) Loading Modem Driver ===================== The module accepts several parameters that can be set when the module is loaded. Syntax: insmod ./GUModem.ko {Module Options} (Command to be executed from directory monaco_linux/ModemDrv/src) Module Options -------------- Rfc1483Mode default: 0 (Bridged LLC) Rfc1483VciX default: 85+X (X would be 1,2,3,4) Rfc1483VpiX default: X (X would be 1,2,3,4) Rfc2364Mode default: 0 (VC) Rfc2364VciX default: X (X would be 1,2,3,4) Rfc2364VpiX default: 116+X (X would be 1,2,3,4) PVCCount default: 4 (Maximum Ethernet interfaces) PPPOACount default: 4 (Maximum PPPOA Interfaces) VPI and VCI settings to be used according to what's configured. For example to load the module and to create 4 interfaces using different set of VCI/VPI the command would be as follows: % insmod ./GUModem.ko Rfc1483Mode=0 Rfc1483Vci1=35 Rfc1483Vpi1=0 Rfc1483Vci2=36 Rfc1483Vpi2=1 Rfc1483Vci3=37 Rfc1483Vpi3=2 Rfc1483Vci4=38 Rfc1483Vpi4=3 PVCCount=4 Rfc2364Mode=2 Rfc2364Vpi1=0 Rfc2364Vci1=116 Rfc2364Vpi2=0 Rfc2364Vci2=117 Issuing this command will create 4 ethernet interfaces and 2 PVC for PPPOA interfaces. ( Combination of Rfc1483Vpi1 and Rfc1483Vci1 will be the first interface, Rfc1483Vpi2 and Rfc1483Vci2 will be 2nd interface and so on.) The details of various options used in command above is as below 1). PVCCount - This indicates the number of PVCs user wants to configure for ethernet interfaces. Maximum value for this variable in this release is 4 and hence can have any walue between 1 and 4, any value above 4 and below 1 is invalid and driver loading will fail. 2). PPPOACount - This indicates the number of PVCs user wants to configure for PPPOA interfaces. Maximum value for this variable in this release is 4 and hence can have any walue between 1 and 4, any value above 4 and below 1 is invalid and driver loading will fail. 3). Rfc1483Vpi1, Rfc1483Vpi2, Rfc1483Vpi3, Rfc1483Vpi4 -- These are 4 different values of the VPIs that user wants to configure. 4). Rfc1483Vci1, Rfc1483Vci2, Rfc1483Vci3, Rfc1483Vci4 -- These are 4 different values of the VCIs that user wants to configure. 5). Rfc1483Mode defines the mode for which the PVC is operating. In this release this value of Rfc1483Mode remains same for all the PVCs which are being created. Thus all VCs using rfc1483 encapsulation will be created using same encapsulation type. 3). Rfc2364Vpi1, Rfc2364Vpi2 -- These are different values of the VPIs that user wants to configure for PPP interfaces. 4). Rfc2364Vci1, Rfc2364Vci2 -- These are different values of the VCIs that user wants to configure for PPP interfaces corresponding to above mentioned VPIs. Note: Please note that the VPIs/VCIs of the PVCs should not be conflicting with each other else the driver loading will fail. Verification of driver loading successfully =========================================== To determine if the driver has loaded: % dmesg (or file /var/log/messages) gp: USB Modem Driver Build To determine if driver is in data mode. % dmesg (or file /var/log/messages) gp: Link established (8000/892) ^^^^ ^^^ ^ ^ ^ Upstream rate Downstream rate Alternatively the control panel application can also be used to get Modem Status as given below. % gsi_cfg eth2 -s ( The ethernet device depends on what has been configured on the system ) (Command to be executed from monaco_linux/cpl) Changes required to modify the number of MAXIMUM Ethernet interface PVCs that user can configure =============================================================================== 1) File Modemdrv/inc/atmuni.h (line 65) contains macro MAX_PVC_SUPPORTED which is presently set to 4. Change this to the desired maximum number of interfaces required. 2) Make changes in file Modemdrv/inc/atmusb.h ( after Line 229) to define the default values of additional VCIs and VPIs. For example if user increases MAX_PVC_SUPPORTED to 5 then add following lines in Modemdrv/inc/atmusb.h #define RFC1483_DEFAULT_VCI5 90 #define RFC1483_DEFAULT_VPI5 4 3) Add following lines in Modemdrv/src/GULinux.c (After Line 164). This will add the addtional VPI/VCI Configuration parameter to be recognized by insmod command. MODULE_PARM_DESC(Rfc1483Vci5, "RFC1483 VCI5"); MODULE_PARM(Rfc1483Vci5, "h"); MODULE_PARM_DESC(Rfc1483Vpi5, "RFC1483 VPI5"); MODULE_PARM(Rfc1483Vpi5, "h"); 4) Add following lines in Modemdrv/src/GULinux.c (After Line 111). This will define variables to be used for additional VPI/VCI Configuration. static u16 Rfc1483Vci5 = RFC1483_DEFAULT_VCI5; static u16 Rfc1483Vpi5 = RFC1483_DEFAULT_VPI5; 5) Add following lines in Modemdrv/src/GULinux.c (After Line 441 in function GpQueryConfig) This sets the additional VPI/VCI values in internal configuration structure from static variables corresponding to command line parameters) pCfg->rfc1483Vci[X] = Rfc1483VciX; pCfg->rfc1483Vpi[X] = Rfc1483VpiX; X in above two line is the index added. Say if max pvc is modified to 5 then X will be 5. Changes required to modify the number of MAXIMUM PPPOA interface PVCs that user can configure =============================================================================== 1) File Modemdrv/inc/atmuni.h (line 66) contains macro GSI_WAN_MAX_CHANNELS which is presently set to 4. Change this to the desired maximum number of interfaces required. 2) Make changes in file Modemdrv/inc/atmusb.h ( after Line 400) to define the default values of additional VCIs and VPIs. For example if user increases GSI_WAN_MAX_CHANNELS to 5 then add following lines in Modemdrv/inc/atmusb.h #define RFC2364_DEFAULT_VCI5 X #define RFC2364_DEFAULT_VPI5 Y where X and Y are desired default VPI/VCI for additional PVC 3) Add following lines in Modemdrv/src/GULinux.c (After Line 197). This will add the addtional VPI/VCI Configuration parameter to be recognized by insmod command. MODULE_PARM_DESC(Rfc2364Vci5, "RFC2364 VCI5"); MODULE_PARM(Rfc2364Vci5, "h"); MODULE_PARM_DESC(Rfc2364Vpi5, "RFC2364 VPI5"); MODULE_PARM(Rfc2364Vpi5, "h"); 4) Add following lines in Modemdrv/src/GULinux.c (After Line 126). This will define variables to be used for additional VPI/VCI Configuration. static u16 Rfc2364Vci5 = RFC2364_DEFAULT_VCI5; static u16 Rfc2364Vpi5 = RFC2364_DEFAULT_VPI5; 5) Add following lines in Modemdrv/src/GULinux.c (After Line 456 in function GpQueryConfig) This sets the additional VPI/VCI values in internal configuration structure from static variables corresponding to command line parameters) pCfg->rfc2364Vci[X] = Rfc2364VciX; pCfg->rfc2364Vpi[X] = Rfc2364VpiX; X in above two line is the index added. Say if max pvc is modified to 5 then X will be 5. 6) monaco_linux/cpl/gsi_cfg.c contains variables PVCCount and PPPOACount defined as 4. This has to be modfied to the desired number of interfaces. Unloading the module & the firmware loader ------------------------------------------ To unload an unused module: % rmmod GUModem (Command to be executed from directory monaco_linux/ModemDrv) You may need to exit or disconnect any program current using the module before it will unload. If the module was configured for LAN, shutdown the ethernet interface: % ifconfig eth2 down Note: If multiple ethernet interfaces are created then all the ethernet interfaces need to be brought down before unloading the driver. If the module was configured as a WAN device, you may need to disconnect the PPP daemon (pppd) from the TTY interfaces. Do this by terminating the PPP daemon: % killall pppd LAN Configuration ----------------- To enable LAN traffic over the ethernet interface: % ifconfig eth2 192.168.1.200 up You may also need to modify the netmask and route for the interface. Refer to the manual pages for ifconfig and route for more information. To test the LAN connection is alive by pinging the remote side: % ping 192.168.1.1 To disconnect the LAN inteface: % ifconfig eth2 down WAN Configuration ----------------- The PPP daemon (pppd) talks to the driver over TTY devices. Before the driver can be used, the devices /dev/ttyG[0-X] and /dev/cug[0-X] need to be created. X here is the maximum supported PPP interfaces. This can be performed by executing: % makenode devnodes or by entering the following from the command line: % mknod /dev/ttyG0 c 43 0 % chown root.uucp /dev/ttyG0 % chmod 0660 /dev/ttyG0 % mknod /dev/cug0 c 44 0 % chown root.uucp /dev/cug0 % chmod 0660 /dev/cug0 If the support is required for more than the default configured interfaces then additional device nodes need to be created along with this. Next, PPP needs to be configured as a client to connect to a PPP server. The PPP server should already be created, and a dialup user configured. For this example, the user name is "test_user", and the user password is "test_password". Add the following (delete the leading spaces, and replace the spaces with tabs) to: "/etc/ppp/pap-secrets" and "/etc/ppp/chap-secrets" "test_user" * "test_password" Please note that user name and passward should be given in double quotes as shown above. Also note that there should be additional username / password configured for additional PPP interfaces. Create a PPP description file: "/etc/ppp/peers/adsl0" that contains: user "test_user" ttyG0 sync mtu 1490 mru 1490 debug It should be also noted that additional "adslX" files need to be created corresponding to the PPP interfaces where X is the number of the PPP interface To initiate a WAN connection execute the following: % pppd call adsl0 In same way additional PPP links can be setup using command "pppd call adslX" To test the PPP connection by pinging the remote side: Do ifconfig -a to get the remote IPADDRESS and then ping the remote. % ping Remote IPADDRESS PPPoE Configuration ------------------- The PPPoE should be installed on the system. The file /etc/pppoe/pppoe.conf should have ETH=eth1 (where eth1 is the Ethernet card connected to ADSL modem) and USER=test_user. To enable the interface: % ifconfig eth1 up ( eth1 is the ethernet device as configured in file /etc/pppoe/pppoe.conf Then execute: adsl-start Changing Driver and DSP Parameters Configuration ------------------------------------------------ Conexant provides "gsi_cfg" control panel application ( available in cpl directory in src tree) to enable customers to change the drivers and DSP parameters on run time. To see the parameter of the application run following command gsi_cfg eth1 -h To change the Driver and DSP parameters. Modify the gp.cfg file and run the control panel with Change configuration option(run -C eth2) To see the current firmware deploymet option, run following command from cpl directory with superuser permissions gsi_cfg eth1 -f To see the All available firmware deploymet options, run following command from cpl directory with superuser permissions gsi_cfg eth1 -P To change the current firmware option to any other available value, open file gp.cfg presnt in cpl firectory. Then set the option GTI_PROFILE_ITEM to any other value as obtained from above command. Then run the following command from cpl directory with superuser permissions gsi_cfg eth1 -F Various modes tested -------------------- WAN modes tested 1. RFC 2364 PPPoATM LLC encapsulation LAN modes tested 1. RFC 1483 IPoATM/bridged LLC encapsulation 2. RFC 1483 IPoATM/bridged VC encapsulation LAN modes which are not tested are 1. RFC 2364 PPPoATM NULL encapsulation 2. RFC 2516 PPPoE encapsulation Known Issues ------------ 1)In Linux kernel 2.6 series there is an issue related to usage of "interruptible_sleep_on" kernel API which results in crash of the driver. To resolve this issue (specifically in Fedora Core 3) we have used Semaphores as IPC mechanism. This might create problems when driver is used in SMP systems.Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.