208 lines
		
	
	
	
		
			9.5 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			208 lines
		
	
	
	
		
			9.5 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								sb1000 is a module network device driver for the General Instrument (also known
							 | 
						||
| 
								 | 
							
								as NextLevel) SURFboard1000 internal cable modem board.  This is an ISA card
							 | 
						||
| 
								 | 
							
								which is used by a number of cable TV companies to provide cable modem access.
							 | 
						||
| 
								 | 
							
								It's a one-way downstream-only cable modem, meaning that your upstream net link
							 | 
						||
| 
								 | 
							
								is provided by your regular phone modem.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This driver was written by Franco Venturi <fventuri@mediaone.net>.  He deserves
							 | 
						||
| 
								 | 
							
								a great deal of thanks for this wonderful piece of code!
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								-----------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Support for this device is now a part of the standard Linux kernel.  The
							 | 
						||
| 
								 | 
							
								driver source code file is drivers/net/sb1000.c.  In addition to this
							 | 
						||
| 
								 | 
							
								you will need:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1.) The "cmconfig" program.  This is a utility which supplements "ifconfig"
							 | 
						||
| 
								 | 
							
								to configure the cable modem and network interface (usually called "cm0");
							 | 
						||
| 
								 | 
							
								and
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								2.) Several PPP scripts which live in /etc/ppp to make connecting via your
							 | 
						||
| 
								 | 
							
								cable modem easy.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   These utilities can be obtained from:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      http://www.jacksonville.net/~fventuri/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   in Franco's original source code distribution .tar.gz file.  Support for
							 | 
						||
| 
								 | 
							
								   the sb1000 driver can be found at:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      http://home.adelphia.net/~siglercm/sb1000.html
							 | 
						||
| 
								 | 
							
								      http://linuxpower.cx/~cable/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   along with these utilities.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								3.) The standard isapnp tools.  These are necessary to configure your SB1000
							 | 
						||
| 
								 | 
							
								card at boot time (or afterwards by hand) since it's a PnP card.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   If you don't have these installed as a standard part of your Linux
							 | 
						||
| 
								 | 
							
								   distribution, you can find them at:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      http://www.roestock.demon.co.uk/isapnptools/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   or check your Linux distribution binary CD or their web site.  For help with
							 | 
						||
| 
								 | 
							
								   isapnp, pnpdump, or /etc/isapnp.conf, go to:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      http://www.roestock.demon.co.uk/isapnptools/isapnpfaq.html
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								-----------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To make the SB1000 card work, follow these steps:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1.) Run `make config', or `make menuconfig', or `make xconfig', whichever
							 | 
						||
| 
								 | 
							
								you prefer, in the top kernel tree directory to set up your kernel
							 | 
						||
| 
								 | 
							
								configuration.  Make sure to say "Y" to "Prompt for development drivers"
							 | 
						||
| 
								 | 
							
								and to say "M" to the sb1000 driver.  Also say "Y" or "M" to all the standard
							 | 
						||
| 
								 | 
							
								networking questions to get TCP/IP and PPP networking support.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								2.) *BEFORE* you build the kernel, edit drivers/net/sb1000.c.  Make sure
							 | 
						||
| 
								 | 
							
								to redefine the value of READ_DATA_PORT to match the I/O address used
							 | 
						||
| 
								 | 
							
								by isapnp to access your PnP cards.  This is the value of READPORT in
							 | 
						||
| 
								 | 
							
								/etc/isapnp.conf or given by the output of pnpdump.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								3.) Build and install the kernel and modules as usual.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								4.) Boot your new kernel following the usual procedures.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								5.) Set up to configure the new SB1000 PnP card by capturing the output
							 | 
						||
| 
								 | 
							
								of "pnpdump" to a file and editing this file to set the correct I/O ports,
							 | 
						||
| 
								 | 
							
								IRQ, and DMA settings for all your PnP cards.  Make sure none of the settings
							 | 
						||
| 
								 | 
							
								conflict with one another.  Then test this configuration by running the
							 | 
						||
| 
								 | 
							
								"isapnp" command with your new config file as the input.  Check for
							 | 
						||
| 
								 | 
							
								errors and fix as necessary.  (As an aside, I use I/O ports 0x110 and
							 | 
						||
| 
								 | 
							
								0x310 and IRQ 11 for my SB1000 card and these work well for me.  YMMV.)
							 | 
						||
| 
								 | 
							
								Then save the finished config file as /etc/isapnp.conf for proper configuration
							 | 
						||
| 
								 | 
							
								on subsequent reboots.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								6.) Download the original file sb1000-1.1.2.tar.gz from Franco's site or one of
							 | 
						||
| 
								 | 
							
								the others referenced above.  As root, unpack it into a temporary directory and
							 | 
						||
| 
								 | 
							
								do a `make cmconfig' and then `install -c cmconfig /usr/local/sbin'.  Don't do
							 | 
						||
| 
								 | 
							
								`make install' because it expects to find all the utilities built and ready for
							 | 
						||
| 
								 | 
							
								installation, not just cmconfig.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								7.) As root, copy all the files under the ppp/ subdirectory in Franco's
							 | 
						||
| 
								 | 
							
								tar file into /etc/ppp, being careful not to overwrite any files that are
							 | 
						||
| 
								 | 
							
								already in there.  Then modify ppp@gi-on to set the correct login name,
							 | 
						||
| 
								 | 
							
								phone number, and frequency for the cable modem.  Also edit pap-secrets
							 | 
						||
| 
								 | 
							
								to specify your login name and password and any site-specific information
							 | 
						||
| 
								 | 
							
								you need.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								8.) Be sure to modify /etc/ppp/firewall to use ipchains instead of
							 | 
						||
| 
								 | 
							
								the older ipfwadm commands from the 2.0.x kernels.  There's a neat utility to
							 | 
						||
| 
								 | 
							
								convert ipfwadm commands to ipchains commands:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								   http://users.dhp.com/~whisper/ipfwadm2ipchains/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								You may also wish to modify the firewall script to implement a different
							 | 
						||
| 
								 | 
							
								firewalling scheme.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								9.) Start the PPP connection via the script /etc/ppp/ppp@gi-on.  You must be
							 | 
						||
| 
								 | 
							
								root to do this.  It's better to use a utility like sudo to execute
							 | 
						||
| 
								 | 
							
								frequently used commands like this with root permissions if possible.  If you
							 | 
						||
| 
								 | 
							
								connect successfully the cable modem interface will come up and you'll see a
							 | 
						||
| 
								 | 
							
								driver message like this at the console:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								         cm0: sb1000 at (0x110,0x310), csn 1, S/N 0x2a0d16d8, IRQ 11.
							 | 
						||
| 
								 | 
							
								         sb1000.c:v1.1.2 6/01/98 (fventuri@mediaone.net)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The "ifconfig" command should show two new interfaces, ppp0 and cm0.
							 | 
						||
| 
								 | 
							
								The command "cmconfig cm0" will give you information about the cable modem
							 | 
						||
| 
								 | 
							
								interface.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								10.) Try pinging a site via `ping -c 5 www.yahoo.com', for example.  You should
							 | 
						||
| 
								 | 
							
								see packets received.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								11.) If you can't get site names (like www.yahoo.com) to resolve into
							 | 
						||
| 
								 | 
							
								IP addresses (like 204.71.200.67), be sure your /etc/resolv.conf file
							 | 
						||
| 
								 | 
							
								has no syntax errors and has the right nameserver IP addresses in it.
							 | 
						||
| 
								 | 
							
								If this doesn't help, try something like `ping -c 5 204.71.200.67' to
							 | 
						||
| 
								 | 
							
								see if the networking is running but the DNS resolution is where the
							 | 
						||
| 
								 | 
							
								problem lies.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								12.) If you still have problems, go to the support web sites mentioned above
							 | 
						||
| 
								 | 
							
								and read the information and documentation there.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								-----------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Common problems:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								1.) Packets go out on the ppp0 interface but don't come back on the cm0
							 | 
						||
| 
								 | 
							
								interface.  It looks like I'm connected but I can't even ping any
							 | 
						||
| 
								 | 
							
								numerical IP addresses.  (This happens predominantly on Debian systems due
							 | 
						||
| 
								 | 
							
								to a default boot-time configuration script.)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Solution -- As root `echo 0 > /proc/sys/net/ipv4/conf/cm0/rp_filter' so it
							 | 
						||
| 
								 | 
							
								can share the same IP address as the ppp0 interface.  Note that this
							 | 
						||
| 
								 | 
							
								command should probably be added to the /etc/ppp/cablemodem script
							 | 
						||
| 
								 | 
							
								*right*between* the "/sbin/ifconfig" and "/sbin/cmconfig" commands.
							 | 
						||
| 
								 | 
							
								You may need to do this to /proc/sys/net/ipv4/conf/ppp0/rp_filter as well.
							 | 
						||
| 
								 | 
							
								If you do this to /proc/sys/net/ipv4/conf/default/rp_filter on each reboot
							 | 
						||
| 
								 | 
							
								(in rc.local or some such) then any interfaces can share the same IP
							 | 
						||
| 
								 | 
							
								addresses.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								2.) I get "unresolved symbol" error messages on executing `insmod sb1000.o'.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Solution -- You probably have a non-matching kernel source tree and
							 | 
						||
| 
								 | 
							
								/usr/include/linux and /usr/include/asm header files.  Make sure you
							 | 
						||
| 
								 | 
							
								install the correct versions of the header files in these two directories.
							 | 
						||
| 
								 | 
							
								Then rebuild and reinstall the kernel.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								3.) When isapnp runs it reports an error, and my SB1000 card isn't working.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Solution -- There's a problem with later versions of isapnp using the "(CHECK)"
							 | 
						||
| 
								 | 
							
								option in the lines that allocate the two I/O addresses for the SB1000 card.
							 | 
						||
| 
								 | 
							
								This first popped up on RH 6.0.  Delete "(CHECK)" for the SB1000 I/O addresses.
							 | 
						||
| 
								 | 
							
								Make sure they don't conflict with any other pieces of hardware first!  Then
							 | 
						||
| 
								 | 
							
								rerun isapnp and go from there.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								4.) I can't execute the /etc/ppp/ppp@gi-on file.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Solution -- As root do `chmod ug+x /etc/ppp/ppp@gi-on'.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								5.) The firewall script isn't working (with 2.2.x and higher kernels).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Solution -- Use the ipfwadm2ipchains script referenced above to convert the
							 | 
						||
| 
								 | 
							
								/etc/ppp/firewall script from the deprecated ipfwadm commands to ipchains.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								6.) I'm getting *tons* of firewall deny messages in the /var/kern.log,
							 | 
						||
| 
								 | 
							
								/var/messages, and/or /var/syslog files, and they're filling up my /var
							 | 
						||
| 
								 | 
							
								partition!!!
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Solution -- First, tell your ISP that you're receiving DoS (Denial of Service)
							 | 
						||
| 
								 | 
							
								and/or portscanning (UDP connection attempts) attacks!  Look over the deny
							 | 
						||
| 
								 | 
							
								messages to figure out what the attack is and where it's coming from.  Next,
							 | 
						||
| 
								 | 
							
								edit /etc/ppp/cablemodem and make sure the ",nobroadcast" option is turned on
							 | 
						||
| 
								 | 
							
								to the "cmconfig" command (uncomment that line).  If you're not receiving these
							 | 
						||
| 
								 | 
							
								denied packets on your broadcast interface (IP address xxx.yyy.zzz.255
							 | 
						||
| 
								 | 
							
								typically), then someone is attacking your machine in particular.  Be careful
							 | 
						||
| 
								 | 
							
								out there....
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								7.) Everything seems to work fine but my computer locks up after a while
							 | 
						||
| 
								 | 
							
								(and typically during a lengthy download through the cable modem)!
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Solution -- You may need to add a short delay in the driver to 'slow down' the
							 | 
						||
| 
								 | 
							
								SURFboard because your PC might not be able to keep up with the transfer rate
							 | 
						||
| 
								 | 
							
								of the SB1000. To do this, it's probably best to download Franco's
							 | 
						||
| 
								 | 
							
								sb1000-1.1.2.tar.gz archive and build and install sb1000.o manually.  You'll
							 | 
						||
| 
								 | 
							
								want to edit the 'Makefile' and look for the 'SB1000_DELAY'
							 | 
						||
| 
								 | 
							
								define.  Uncomment those 'CFLAGS' lines (and comment out the default ones)
							 | 
						||
| 
								 | 
							
								and try setting the delay to something like 60 microseconds with:
							 | 
						||
| 
								 | 
							
								'-DSB1000_DELAY=60'.  Then do `make' and as root `make install' and try
							 | 
						||
| 
								 | 
							
								it out.  If it still doesn't work or you like playing with the driver, you may
							 | 
						||
| 
								 | 
							
								try other numbers.  Remember though that the higher the delay, the slower the
							 | 
						||
| 
								 | 
							
								driver (which slows down the rest of the PC too when it is actively
							 | 
						||
| 
								 | 
							
								used). Thanks to Ed Daiga for this tip!
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								-----------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Credits:  This README came from Franco Venturi's original README file which is
							 | 
						||
| 
								 | 
							
								still supplied with his driver .tar.gz archive.  I and all other sb1000 users
							 | 
						||
| 
								 | 
							
								owe Franco a tremendous "Thank you!"  Additional thanks goes to Carl Patten
							 | 
						||
| 
								 | 
							
								and Ralph Bonnell who are now managing the Linux SB1000 web site, and to
							 | 
						||
| 
								 | 
							
								the SB1000 users who reported and helped debug the common problems listed
							 | 
						||
| 
								 | 
							
								above.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
													Clemmitt Sigler
							 | 
						||
| 
								 | 
							
													csigler@vt.edu
							 |